vimチュートリアルのメモ
私はエディタに関しては基本的にemacs派ですが、コマンドラインからちょろっと編集するにはviを使えた方が便利そうなので、ここらで少し気合を入れてvi (のクローンであるvim) を勉強してみることにしました。
# ときどき聞く、vi派からの熱いviプッシュの声に影響されて、という理由もある
取っかかりとして、vimに付属するチュートリアルをざっとさらってみたので、今回覚えた (はずの) コマンドをメモっておきます。
なお、チュートリアル開始時点での私のスキルは、h/j/k/lでのカーソル移動やi/ESCでのモード切り替えなど、最小限viを触れる程度のレベルです。
チュートリアルの起動
vimに付属するvimtutorというコマンドを実行します。
$ vimtutor
なお、今回使用したUbuntu 9.04では、vim-tinyというパッケージが初期状態でインストールされており、これにはvimtutorは含まれないようです。vimパッケージをインストールをするとvimtutorコマンドが一緒にインストールされます。
$ sudo apt-get install vim
vimtutorで表示されるチュートリアルの言語は環境変数LANGによって変わるようで、私の環境 (LANG=ja_JP.UTF-8) では日本語のチュートリアルが表示されました。
以下のいずれかの方法で、英語版のチュートリアルが表示されるようです。
$ vimtutor en $ LANG=C vimtutor
オンラインマニュアルの参照
- :help オンラインマニュアル (トップページ)
- オンラインマニュアル中の別のセクションに飛ぶには CTRL-]、ジャンプ元に戻るには CTRL-T
- :help COMMAND コマンドについてのヘルプ検索
- :q ヘルプ終了
viコマンド: カーソル移動系
- w 次の単語に移動 (空白で区切られた次の文字まで)
- 2wとすると、2つ先の単語まで移動
- e 単語の末尾に移動 (空白で区切られた直前の文字まで)
- 0 現在の行の先頭に移動 (^ と同じ?)
- CTRL-G 現在の行番号を表示
- G ファイル末尾に移動
- gg ファイル先頭に移動
- <行番号>G 指定した行番号に移動
- % 対応する括弧に移動
viコマンド: 編集系
- dw 単語を削除 (現在のカーソル位置から、次の空白まで)
- 2dw (またはd2w) とすると、2語を削除
- de 単語を削除 (現在のカーソル位置から、次の空白の直前まで)
- d$ 現在のカーソル位置から行末まで削除
- dd 現在の行全体を削除
- 2dd (またはd2d) とすると、2行を削除
- r 現在位置の文字の置き換え
- cw 単語の置き換え (現在位置から、その単語の末尾まで)
- c$ 現在位置から、行末までの置き換え
- R 置換モード (ESCで終了)
- o 現在位置の次の行に挿入
- A 現在の行の末尾に挿入
- a 現在位置の後に挿入
- v ビジュアルモード (選択範囲を反転表示)
- 範囲指定後yで、選択範囲をコピー (yank)
- 範囲指定後xで、指定範囲をカット
- :s/OLD/NEW/ 文字列置換 (最初にヒットした1箇所)
- :s/OLD/NEW/g 行中のすべてのヒットした箇所を対象とした置換
- :#,#s/OLD/NEW/g 指定した範囲を対象とした置換 (#,#には始点、終点の行番号が入る)
- :%s/OLD/NEW/g ファイル全体を対象とした置換
- :%s/OLD/NEW/gc 置換対象ごとに確認を取りながら置換
viコマンド: 検索
- / 検索 (順方向)
- ? 検索 (逆方向)
- n 次の検索結果に移動
- CTRL-O 元の場所に戻る
viコマンド: その他
- :! 外部コマンド実行 (例: :!ls)
- :w FILENAME 別ファイル名での保存
- :r FILENAME 別ファイルの取り込み
- :set OPTION オプションの設定
- ic (ignorecase) 検索コマンドで大文字/小文字を区別しない
- hls (hlsearch) 検索コマンドでヒットした箇所を強調表示
- is (incsearch) 検索コマンドがインクリメンタルサーチになる
- オプション名の前に 'no' をつけるとオプション無効化
- コマンド名補完
- ':' の後に数文字入力→CTRL-Dで候補一覧表示
- ':' の後に数文字入力→TABでコマンド名補完