Vi/Vim
vi (ヴィーアイ) は UNIX に標準搭載されているテキストエディタ。 Vim (ヴィム) は vi の発展版で、近年の UNIX 系 OS で vi
を打って起動するのは Vim であることが多い。
最低限覚えておくこと
- 起動時はノーマルモード (編集はできない)。
- カーソル移動は (矢印キーも使えるけど) 基本 h: 左, j: 下, k: 上, l: 右 でおこなう。
- 編集は i でインサートモード
--INSERT--
に入って行う。 インサートモードではカーソル移動はなるべくしない。 - インサートモードから抜けるには esc や controlC
- :w で変更を保存、:q で終了
- :wq や ZZ で保存して終了
- :q! で保存せずに強制終了
設定
ノーマルモードで :set <option>
もしくは ~/.vimrc
vimtutor
vim
の操作を習得するための練習問題付き教材。 vimtutor
で起動する。
- カーソル移動
- h, j, k, l (左、下、上、右)
- ▲, ◀︎, ▶︎, ▼
- 起動と終了
- esc でノーマルモードへ
- :q! で保存せずに終了
- :w で変更を保存、:q で終了
- :wq で保存して終了
- テキストの削除
- x でカーソルの右側の文字を削除
- テキストの挿入
- 編集箇所まで移動 (インサートモードでも移動できるけどしないつもりで)
- I でインサートモードへ
- 編集したら esc や controlC でノーマルモードへ
- テキストの追加
- 編集行まで移動 (行の上ならどの位置でも OK)
- A でインサートモードへ。カーソルは末尾に移る。
- 編集したらノーマルモードへ
- 削除コマンド (オペレータ)
- 削除したい箇所の”先頭”にカーソルを移動
- dw で空白を含む単語の末尾まで
- de で空白を含まない単語の末尾まで
- d$ でカーソル位置から行末まで
- モーション + カウント
- w、e は単体でカーソル移動コマンドとして機能する。
- 数字と組み合わせて使用できる。
- 2w で2単語先の語頭へ
- 3e で3単語先の終端へ
- 0 で行頭へ
- オペレータ + カウント + モーション
- d2w でカーソル位置から2単語削除
- 行の削除
- 削除する行にカーソルを移動 (位置はどこでもOK)
- dd で行を削除
- 2dd で2行削除
- 操作のやり直し
- u で直前の操作を取り消し
- U で行全体の操作を取り消し
- 行の貼り付け
- dd で行をカット
- 貼り付けたい位置のひとつ上の行へカーソルを移動
- p で貼り付け
- 置換 (使う場面ある?後述する
s///g
で十分な気もする。) - 置換する文字の先頭にカーソルを移動
- r置換先の文字 で置換
- 変更
- ce でカーソル位置から単語の終わりまでを削除
- 同時にインサートモードに移るので、編集して esc
- ファイル内の移動
- controlG で行番号を取得
- G でファイルの最下行へ
- gg でファイルの先頭へ
- 行番号 G で指定した行へ
- 検索
- / + 検索したい単語 で下方向、? + 検索したい単語で上方向に検索
- n で次のヒット、N で前のヒットへカーソルを移動
- 対応する括弧を検索
- % でカーソル位置の括弧と対応する括弧へ移動
- 置換
- :s/old/new/g でカーソル行の “old” を “new” に置換
- :#,#s/old/new/g で置換開始行と終了行を指定
- :%s/old/new/g でファイル全体にわたって置換
- :%s/old/new/gc でファイル全体にわたって1つ1つ確認をとりながら置換
- 外部コマンドの実行
- :! に続けてコマンドを実行できる。(e.x. :!pwd)
- Enter で終了
- 範囲選択
- v でビジュアルモードに移行
- カーソルキーを移動して範囲選択
- shiftv は行選択モード、controlv は矩形選択モード
- ファイル、標準出力の取り込み
- :r ファイル名 でファイルの内容をカーソル位置に挿入
- :r :!pwd などで、コマンドの標準出力を取り込むこともできる。
- オープンコマンド
- o でカーソル位置の下に行を挿入してインサートモードへ
- O でカーソル位置の上に行を挿入してインサートモードへ
- 置換モード
- R で置換モードへ
- 文字を打つと元々あった文字は置き換えられる。
- esc や controlC で脱出
- コピー
- v でビジュアルモードに移行して範囲選択 → y でコピー
- p でペースト
- yw で1単語コピー
- yy で行まるごとコピー