試して覚える、vi(vim)コマンド
目次
モード切替
- モードは2つ
- 参照モード(標準モード?)
- 編集モード
- 編集するぞ!
- i, I, a, A, o, O
- やーめた
- Esc
移動
カーソル移動(参照モードで)
マウスが使えないだけあって手厚い
- ちょっとずつ
- j, k, h, l
- 文字数指定
- 2j, 5k,…
- 単語ごと
- w, b
- 複数単語
- 2w, 5b,…
- はじっこ
- 0 …… 行頭
- $ …… 行末
- G …… EOF(最後)
- :0 …… SOF(最初)
- 行ごと
- Ctrl+d, Ctrl+u
- 前に数字入力で行数指定
- 行指定
- :3 …… 3行目に移動
- ページ
- Ctrl+f, Ctrl+b
カーソル移動(編集モードで)
- 十字キー とか
検索
- /(スラッシュ)+文字入力+Enter
- n …… 次を検索
- N …… 前を検索
編集
ファイル操作
- :q …… 閉じる
- :w …… 保存する
- :q! …… やめる(編集を破棄して閉じる)
- :w! …… 強制保存(読み取り専用で開いていても)
- :wq …… 保存して閉じる
編集(参照モードで)
- コピー(y)
- yy …… 今の行
- yj …… 今の行と次の行
- 3yl …… 今のところから3文字
- ペースト
- p,P
- 切り取り
- x, 2x
- 大きく切り取り
- dd …… 今の行
- dj …… 今の行と次の行
- 3dj …… 今のところから3行
- dw …… 単語
- 3dw …… 3単語
簡易置換(参照モード→編集モード)
- s …… 1文字消して編集モード
- 3s …… 3文字消して編集モード
- c3l …… 右に3文字消して編集モード
- cw …… 単語消して編集モード
置換(参照モード)
- :s/aaa/bbb/ …… その行で「aaa」を「bbb」に1つ置換
- :s/aaa/bbb/g …… その行で「aaa」を「bbb」にすべて置換
- :%s/aaa/bbb/ …… カーソルの位置から最初に見つかった「aaa」を「bbb」
- :%s/aaa/bbb/g ……「aaa」を「bbb」に全置換
その他
マクロ
- 行頭に「#」を付けてコメント行にする
- q+1+0+i+#+Esc+j+q
- 「q」で挟まれたところがマクロ
- 「1」がマクロを呼び出すキー文字。文字でもいい
- 「0+i+#+Esc+j」が覚えさせたマクロ
- 5@1
- マクロ名「1」を5回実行する(5行の先頭に#が付いた)
- q+1+0+i+#+Esc+j+q
- 行頭にある「#」を削除する
- q+2+0+x+j+q
- 5@2
操作
- .(ピリオド)…… 繰り返し
- n+.(ピリオド)…… 検索して前のコマンド(置換とか)実行
- u …… 戻す(WindowsのCtrl+z)
- Ctrl+r …… やり直し(戻したのを戻さなくする)(WindowsのCtrl+y)
Ctrl+zやっちゃったら
- 閉じちゃったように見える
- Ctrl+zには意味がある
- バックグラウンド実行に切り替える
- 復旧(元のvi編集画面に戻るだけ)
- fg(+Enter)
- jobs(+Enter)でバックグラウンド実行を確認
- fg 1(+Enter)なら[1]のバックグラウンド実行を再開
- もちろん、実行中のshellやPythonプログラムをCtrl+zでバックグラウンド実行に切り替えることも可能