Linuxゲリラ戦記

vi(m)を使いこなそう。

左を向いているペンギンみたいなキャラクター、ナックス

vi(m)コマンド(テキストエディタ)

以下のようなコマンドで使う。

$ vi [新しく作りたいファイルのファイル名、もしくは編集したいファイル名]

例えば、新規にabcというファイルを作りたいときは以下の様にする。

$ vi abc

また、既にhogeというファイルがあった場合

$ ls
hoge

以下の様にすればhogeファイルを編集できる。

$ vi hoge

viにはコマンドモードとインサートモードという2つのモードがあり、場合によって使い分ける。

ここでは、hogeという新規ファイルを作る例を示しながら解説する。

まず、以下のコマンドでhogeというファイルを作る。

$ vi hoge

viが起動し、hogeファイルが作られ、現在hogeファイルを編集できる状況にある。

vi(m)起動時のスクリーンショット

起動時は、viはコマンドモードである。とりあえずキーボードのiを押そう。

vi(m)をインサートモードに切り替えた状態のスクリーンショット

左下に「挿入」と言う文字が出て、インサートモードに切り替わった。これで、一般的な他のテキストエディタと同じような操作が出来る。試しに「あいうえお」と入力してみよう。

普通のテキストエディタと同じように使えるvi(m)のインサートモード

改行はEnterキーで行うし、文字を消すときはBack Spaceキーを押せばいい。カーソルの位置は矢印キーで変えられる。

インサートモードからコマンドモードに変えるにはキーボードの左側、画面寄りの方にEscキーというキーがあるはずなので、それを押す。

コマンドモードに切り替えたvi(m)

左下の挿入という文字が無くなり、コマンドモードに戻る。

ファイルの保存はコマンドモードの状態で:wと入力し、

vi(m)で編集したファイルの保存方法

Enterキーを押す

vi(m)の終了方法

viの終了はコマンドモードで:qと入力し

vi(m)の終了方法

Enterキーを押す。

思ったよりも簡単に操作出来る事が分かっていただけたと思う。

vimはviの機能を拡張したものであるが、viと同じように操作出来る。

基本的な使い方は、viと同じく以下の様に行う。

$ vim [新しく作りたいファイルのファイル名、もしくは編集したいファイル名]

ただ、最近のLinuxはviを起動しようとすると、自動的にvimを起動するので「viを使っていると思ったら、vimを使っていた」という事が良くある。そして、それで特に困らない。

上記が基本的な使い方であり、vi(m)の操作に慣れていない間は上記の様に他のテキストエディタと同じ使い方をして構わない(と個人的に思う)。

ただ、vi(m)の操作の真骨頂はコマンドモードにある。

以下にコマンドモードで使える操作を列挙する

hキー
カーソルを左に移動
jキー
カーソルを下へ移動
kキー
カーソルを上へ移動
lキー
カーソルを右へ移動
:w
保存
:q
終了
:wq
保存と終了を同時に行う
:w!
強制的な保存
:q!
強制的な終了
:w 任意のファイル名
任意のファイル名で保存
:set number
行に番号を割り振る
:set nonumber
:set numberで割り振った番号を消す
:任意の数字
任意の数字の行へカーソルを移動する
xキー
文字を一つ削除する
iキー
インサートモードに切り替え、カーソルの位置から文字を入力する
aキー
インサートモードに切り替え、カーソルの位置の一つ後から文字を入力する
Aキー
インサートモードに切り替え、行末から文字を入力する
oキー
インサートモードに切り替え、一つ下の行に新しい行を作り、そこから文字を入力する
Oキー
インサートモードに切り替え、一つ上の行に新しい行を作り、そこから文字を入力する
0キー
カーソルを行頭に移動する
$キー
カーソルを行末に移動する
dw(dキーを押した後にwキーを押す)
カーソルの位置の単語を一つ消す
d$(dキーを押した後、$キー(Shiftキーを押しながら4キーかな?)を押す)
カーソルの位置から行末まで削除する
dd(dキーを2回押す)
行全体を削除する
任意の数字dd(数字を入力した後dキーを2回押す)
「任意の数字」行を削除する。
例:2dd(カーソルの位置の行と一つしたの行の2行を削除)
12dd(カーソルの位置の行から11つ下の行まで、合わせて12行を削除)
yw(yキーを押した後にwキーを押す)
カーソルの位置の単語をコピー
y$(yキーを押した後、$キーを押す)
カーソルの位置から行末までをコピー
yy
行全体をコピーする
任意の数字yy(数字を入力した後yキーを2回押す)
任意の数字行をコピーする
pキー
ddキー、またはyyキー等でバッファに格納された行の貼り付け
uキー
最後に実行したコマンドの取り消し
Uキー
最後に行ったコマンドの行単位の取り消し
Ctrl-r(Ctrlキーを押しながらrキー)
取り消しの取り消し
rキー
一文字置き換える
Rキー
一文字以上を置き換える
cw(cキーを押した後wキー)
単語の一部、もしくは全体の置き換え
Gキー
カーソルの位置をファイルの最後へ移動
1G(1キーを押した後Gキー)
カーソルの位置をファイルの先頭へ移動
wキー
次の単語へカーソル位置を移動
/任意の文字
順方向に任意の文字を検索
?任意の文字
逆方向に任意の文字を検索
任意の文字を検索後、nキー
検索にヒットしたキーワードの次に現れるヒットしたキーワードにカーソル位置を移動
任意の文字を検索後、Nキー
検索にヒットしたキーワードの前に現れるヒットしたキーワードにカーソル位置を移動
%
(や{や[などの括弧の上にカーソルを置き%キーを押すと、対応する括弧へカーソルが移動する
:s/置換前の文字/置換後の文字
その行の任意の文字(置換前の文字)を任意の置換後の文字に置き換える(一番最初にヒットしたもののみ)
:s/置換前の文字/置換後の文字/g
その行の任意の文字(置換前の文字)を任意の置換後の文字に置き換える(行全体)
:任意の数字,任意の数字s/置換前の文字/置換後の文字/g
そのファイルの任意の数字の行から任意の数字の行までに存在する全ての置換前の文字を置換後の文字に置き換える
:%s/置換前の文字/置換後の文字/g
そのファイルに存在する全ての置換前の文字を置換後の文字に置き換える
:%s/置換前の文字/置換後の文字/gc
そのファイルに存在する全ての置換前の文字を、ひとつずつ置換するかしないかを選択しながら置き換える

この他にも色々なコマンドがある。vi(m)を使いこなそうと考えているなら、テキストエディタは日常的にvi(m)を使うように心がけ、できるだけコマンドモードでファイルを編集するようにするといい。