vi(2)

サクサクっとコマンドを並べます。
まず1文字や2文字のコマンドが多いことに気がつきます。
emacsと違って、一度入力モードから抜け出すために、Ctrlと同時押しとかってことをする必要がありません。

編集系のコマンドと移動系のコマンドの組み合わせで処理していきます。
それぞれに10~20くらいあるので、これだけでも数百通りくらいのコマンドに?

(1)必須系
ZZ: 保存して終了
u:アンドゥする
U:行を最初の状態に戻す
Ctrl+R:リドゥする
.:前のコマンドを繰り返す

(2)移動系
h:左に移動
l:右に移動
k:上に移動
j:下に移動

0:行頭に移動
$:行末に移動

+:次の行の1文字目に移動
-:前の行の1文字目に移動

b:前の単語に移動
B:句読点は無視して前の単語に移動

w:次の単語に移動
W:句読点は無視して次の単語に移動

e:単語の末尾に移動
E:句読点を含む単語の末尾に移動
(:文の先頭に移動
):次の文の先頭に移動
{:段落の先頭に移動
}:次の段落の先頭に移動
[[:セクションの先頭に移動
]]:次のセクションの先頭に移動

H:画面の一番上に移動
M:画面の中央の行に移動
L:画面の一番下に移動
nH:画面の上からn行目に移動
nL:画面の下からn行目に移動

^:カレント行の1文字目に移動
n|:カレント行のn文字目に移動

/pattern:patternを検索して一致するところに移動
?pattern:逆方向に検索して移動
n:検索を繰り返す
N:検索を繰り返す、ただし方向を変える
/:順方向に検索を繰り返す
?:逆方向に検索を繰り返す

fx:カレント行の文字xを検索して移動
Fx:カレント行の文字xを逆方向で検索して移動
tx:カレント行の文字xを検索して、一致した文字の前の文字に移動
Tx:カレント行の文字xを検索して、一致した文字の次の文字に移動
;:検索を順方向で繰り返す
,:検索を逆方向で繰り返す

“:前にいた位置に移動
”:前にいた位置の行頭に移動
G:最終行に移動
nG:n行目に移動

‘x:マークxのある行の先頭に移動
`x:マークxのある位置に移動

(3)入力系
a:カーソルの後に「追加」する
A:カーソルのある行の末尾に「追加」する

i:カーソルの前に「挿入」する
I:カーソルのある行の行頭に「挿入」する

o:カーソルの下の行を開いて入力
O:カーソルの上の行わ開いて入力

c:移動コマンドを伴って、その範囲を変更
C:カーソルの位置から行末までを変更(c$と等価)
cc:カーソルのある行を変更

r:1文字を変更してすぐにコマンドに戻る
R:単純に上書きモードになる

s:1文字を変更する
S:カーソルのある行を変更(たぶんccと等価)

(4)コピペ系

x:カーソルの位置にある文字を削除(Delete的な)
X:カーソルの前にある文字を削除(BackSpace的な)

d:移動コマンドを伴って、削除
D:カーソルの位置から行末までを削除(d$と等価)
dd:カーソルのある行を削除

y:移動コマンドを伴って、ヤンク
Y:カーソルのある行をヤンク(yyと等価、y$ではない)
yy:カーソルのある行をヤンク

p:カーソル位置の後ろにペースト
P:カーソル位置の前にペースト

(5)スクロール系
Ctrl+F:1画面だけスクロール
Ctrl+B:1画面だけ逆方向にスクロール
Ctrl+D:1/2画面だけスクロール
Ctrl+U:1/2画面だけ逆方向にスクロール

z[Enter]:カーソルのある行を画面の一番上に移動させる
z.:カーソルのある行を画面の中央に移動させる
z-:カーソルのある行を画面の一番下に移動させる

(6)その他
~:大文字と小文字の変換
J:カーソルのある行と、その次の行を結合
mx:カーソルの位置にxというマークをつける
@:バッファを引数として、バッファに保存されているコマンドを実行

Ctrl+L:画面の書き直し
Ctrl+G:カーソルが何行目にあるかを表示

コメント

タイトルとURLをコピーしました