vi (vim) の練習

何かunix的なエディタの練習をしようと思った。
viか、emacsか。


emacsには惹かれるものがあるが、どの環境にでも入っているという点が決め手となってviを選択することにした。
viの練習をしようと思ってぐぐると出てくるのが「:Tutorial」というコマンドだが、Ubuntu10.04のviでは「E:492: エディタのコマンドではありません: Tutorial」と言われてしまう。
チュートリアルはないのか?と思ったが、シェルから「vimtutor」と入力することによってチュートリアルを呼び出すことができるようだ。いやマジで!


以下、今日勉強になった点。

コマンド 効果
o 下の行に入力する
O 上の行に入力する
w 次の単語の先頭にジャンプ
e 次の単語の末尾にジャンプ
ngg n行目に移動
dw カーソル位置から単語の末尾まで(空白を含む)を削除する
de カーソル位置から単語の末尾まで(空白を含まない)を削除する
d$ カーソル位置から行末まで削除する
ncommand commandをn回繰り返す
0 行頭に戻る
U 行に加えた変更をすべて取り消す
C-r 取消した変更の再実行
dd 行の削除だと思っていたら実は切り取りだった
r カーソル位置の文字を1文字置き換える(挿入モードにならない)
ccommand カーソル位置からcommandが示す位置まで削除して挿入モードにする
C-g ファイル内での位置とファイルの状態を表示する
C-o 以前ジャンプした場所に戻る
C-i C-oとは逆方向に戻る
% 対応するカッコにジャンプ
:s/x/y その行で最初に見つかったxをyに変換する
:s/x/y/g その行のxをすべてyに変換する
:n,ms/x/y/g n行目からm行目までのxをすべてyに変換する
:%s/x/y/gc ファイル全体のxをすべてyに確認をとりながら変換する
:!command 外部コマンドの実行
:w filename 別名で保存
v ビジュアルモード。選択した範囲にオペレータを適用可能
:r filename ファイルの中身をカーソル行の下に読み込む
:r !command 外部コマンドの標準出力をカーソル行の下に読み込む
R 置換モード
:set ic 検索で大文字小文字を無視する
:set hls 検索に合致する文字列をハイライトする
:set is インクリメンタルサーチ
/word\c 今回の検索だけ大文字小文字を無視する
C-d コマンドモードでコマンドの一覧やファイルの一覧を表示する