中山テック 代表の中山です。
さて、最近ホームページ制作でもシステム開発でもよくサーバをいじくり回してます。
長年やっているのでWinSCPよりはTeraTermでコマンド操作の方が慣れています。
ファイル転送はWinSCPでもいいんですが、何度もコマンドを操作することがあるので
直接コマンドで命令出した方がやりやすかったりします(WinSCPでもコマンド操作可ですが)。
そんな今回はLinux内でファイルを作る「viエディタ」についてお話したいと思います。
※Windows上でメモ帳を開くことと全く同じです
Windowsのメモ帳と同じで、メモアプリのUnix系OS(Linux、CentOS等)版です。
LinuxもGUIが増えてますが、コンソールから「vi」コマンド、半角スペースを付けて
ファイル名を指定してあげるとファイルを開くことが出来ます。
※参照するだけなら「view」コマンドで読み取り専用で開いてください。
viコマンド
・vi [ファイル名]・・・読み書き可能な状態でファイルを開く
・view [ファイル名]・・・読み取り専用でファイルを開く
それでは早速やっていきましょう。
まず「vi aaa.txt」でメモを新規作成します。
※この時点ではファイルは作られておらず、最後に保存コマンドを打ってやっと作成されます
これで読み書き可能な状態でエディタが起動されました。
では早速文字を打ち込んでいきたいですが、大事な2つのモードについても解説いたします。
各種モード
viエディタには下記の2モードがあるので覚えておいてください
入力モード
アルファベット「i」を押下すると入力モードに入ります。
この状態にするとコマンドモードのコマンドが打てなくなります。
ひたすら文字を入力するためのモードです。
コマンドモードに戻りたい時は「Esc」キーを押下します。
コマンドモード
文字入力が出来ませんが、下記のように便利なモードがあります。
これを覚えると記載するのが早くなるので、絶対覚えておきましょう。
コマンド (キーボード) | 意味 | Windowsの場合 |
---|---|---|
j | 下に1行移動 | ↓ |
k | 上に1行移動 | ↑ |
h | 左に1文字移動 | ← |
l | 右に1文字移動 | → |
0 | 文頭に戻る | Home |
Shift + $ | 文末へ移動 | End |
Ctrl + d | 1ブロック下がる | PgDn |
Ctrl + b | 1ブロック上がる | PgUp |
yy | 行コピー | ??? |
dd | 行削除 | ??? |
u | 1つ前のコマンドを取り消す | Ctrl + z |
x | 1文字消す | BackSpace Delete |
r + 文字 | 指定文字を置換 | Insert→文字 |
d[数字] + l | カーソルの文字を 数字分削除して 左に詰める | - |
d[数字] + h | 左の文字を削除して 左に詰める | - |
d[数字] + j | 数字分下の行を消す | d1000jなら下1000行分削除する |
d[数字] + k | 数字分上の行を消す カーソル当たってる 行は削除しない | d1000kなら上1000行分削除する 今いる場所の行は消えない |
gg | 佐藤ではない(笑) ファイルの1行目に 戻る | Ctrl + Home |
Shift + g | ファイルの最下に移動 | Ctrl + End |
set number | 行番号を表示する | se nuでも可 |
/[文字] | [文字]を検索 | Ctrl + f |
:w | ファイルを保存 ※エディタは閉じない | Ctrl + s |
:wq | ファイルを保存 ※エディタを閉じる | ×マーク |
:q | エディタを閉じる ※保存しない | 何かしら文字を打っていた場合は このコマンドは効かないので注意 |
:q! | 強制的に ディタを閉じる | もちろん保存されない |
:%s/[置換前文字]/ [置換後文字]/g | 全文字列置換 | Ctrl + r |
o | 下に改行 | Enter |
Shift + o | 上に改行 | Shift + Enter |
他にもまだまだありますが、上記を覚えておけば大抵のことは出来ると思います。
最初は慣れずにイライラするかもしれませんが、その向こうには明るい未来が待っているかも(笑)
実践
早速実践していきましょう。
今回は「C言語のHello Worldプログラミング」をやっていきたいと思います。
エディタを抜けたら「ls -ltr」でファイルを確認しましょう。
※lsコマンドとは、今いる場所のファイルやフォルダの一覧を表示するものです
出来ました!
が、C言語のプログラム組んだのに.cの拡張子にしていない痛恨のミス・・・
そしたら「mv aaa.txt aaa.c」で名前をリムーヴしてあげましょう。
※mvはコピーせずファイル名を変えるコマンド。別ファイルの移動にも使われます
終わったらgccでコンパイルしてあげましょう。
もし権限関連エラー(Permission~)が出たら「chmod 755 aaa.c」でコンパイルできるようにしましょう。
コンパイルは「gcc -o aaa aaa.c」、-oでCファイル名を指定できます。
-oを付けない場合はa.outというファイルで吐き出されます。
その後、./aaaと打ち込んでEnterキーを押してみましょう。
まとめ
いかがでしたでしょうか。
今回はHello Worldプログラムを書いただけなので手順は少なかったです。
しかし、大量のログデータの確認、ソースコードが何百秒になるとエディタの使いこなしが求められます。
また、WinSCPなどで楽に行き来してもいいですが、文字コードの変換誤りで化ける可能性もあります。
直接サーバに入り、実行することを求められることもあるので是非覚えておいてください!