vimをどうしても使わなければならない場面がたまにあり、そのたびに調べたりしているので書いておこうかと思います。
Vimのバージョン
vimにはバージョンがありバージョンによっては矩形挿入が使えなかったりするそうです。コンパイル時に決まるVimの種類は、下記の5つがあります(上に行くほど機能が制限されている)
- tiny
- small
- normal
- big
- huge
矩形挿入が使えるのはnormal以上のもの(normal, big, huge)です。
Vimのモード
vimにはノーマルモード、入力モード、ビジュアルモードがあります。起動時はノーマルモードになっています。iをおすと入力モードに移行します。またノーマルモードに戻るにはescキーを押します。ビジュアルモードに移行するにはvをおします。ノーマルモードに戻るにはescキーを押します。
それぞれのモードで役割が違います
ノーマルモード | おもにコマンド操作を行う |
---|---|
入力モード | テキストの入力をおもに行う |
ビジュアルモード | 複数行の選択など |
モードの切替方法
でつくしてはいると思いますが書いておきます。
ノーマルモードに移行 | esc |
---|---|
入力モードに移行 | i |
コマンドモードに移行 | : |
Vimのコマンド
保存や終了
:w | 上書き保存 |
---|---|
:w filename | 新しいファイルで保存 |
:q! | 保存せずに終了 |
:wq | 上書き保存して終了 |
:e filename | 他のファイルを開く |
移動系
gg | 最上部へ移動 |
---|---|
G | 最下部へ移動 |
ctfl+f / ctrl+b | 画面単位の移動 |
w or e / b | 単語単位の移動 |
^ / $ | 行頭か行末へ移動 |
f → char | 検索移動 ;セミコロンをおすと次に検索対象に移動(行で有効) |
% | かっこの上でおすと対応している閉じかっこまで飛ぶ |
挿入
o | 現在の行の下に空白行を追加して挿入モードを開始 |
---|---|
O | 現在の行の上に空白行を追加して挿入モードを開始 |
コピーや切り取り、貼り付け
x | 1文字単位の切り取り |
---|---|
dd | 1行カット |
3dd | 3行カット |
yy | コピー |
3yy | 3行コピー |
p | 貼り付け |
検索
/ | 検索 |
---|---|
n/N | 下方向と上方向 |
*/# | 今あるカーソルの単語を下方向と上方向 |
置換
置換のスラッシュは実際に入力します
:s/state/State | 置換 |
---|---|
:s/i/I/g | 行全体を置換 |
:%s/i/I/g | 全部を置換 |
:%s/i/I/gc | 確認を求める |
undo redo
u undo 元に戻す
ctrl+r redo やりなおし
画面分割
:sp 縦方向に分割
ctrl+w w 画面推移
close 分割終了
タブ
:tabnew タブの作成
gt タブの移動
:tabclose タブを閉じる
vi -p file1 file2 タブで開く
ビジュアルモードのコマンド
shift + v 行単位
ctrl + v 矩形選択
その他
. 直前の操作を繰り返す
Vimのカスタマイズ
- vimをカスタマイズするには.vimrcというファイルを作成する
- .vimrcを作成する場所は → /home/[ユーザーネーム]
vimのkeyマップを編集する例。キャンセルキーをCtrl + jに変更する
imap <C-j> <esc>
キーマップの書き方
<Up>> | 上カーソル |
---|---|
<Down> | 下カーソル |
<Left> | 左カーソル |
<Right> | 右カーソル |
<S-Up> | シフト + 上カーソル |
<S-Down> | シフト + 下カーソル |
<S-Left> | シフト + 左カーソル |
<S-Right> | シフト + 右カーソル |
<C-Left> | コントロール + 上カーソル |
<C-Right> | コントロール + 上カーソル |
<F1> – <F12> | ファンクションキー1から12 |
<S-F1> – <S-F12> | シフト + ファンクションキー1から12 |
<Help> | ヘルプキー |
<Undo> | アンドゥキー |
<Insert> | 挿入キー |
<Home> | ホーム |
<End> | エンド |
<PageUp> | ページアップ |
<PageDown> | ページダウン |
<kHome> | テンキーのホーム(左上) |
<kEnd> | テンキーのエンド(左下) |
<kPageUp> | テンキーのページアップ(右上) |
<kPageDown> | テンキーのページダウン(右下) |
<kPlus> | テンキーの+ |
<kMinus> | テンキーの- |
<kMultiply> | テンキーの * |
<kDivid> | テンキーの / |
<kEnter> | テンキーのEnter |
<kPoint> | テンキーのピリオド |
<k0> – <k9> | テンキーの0から9 |
<S-…> | シフトキー |
<C-…> | コントロールキー |
<M-…> | altまたはmetaキー |
<A-…> | メタキーと同じ |
<D-…> | コマンドキー (Macintosh のみ) |
<t_xx> | termcapで”xx”エントリを持つキー |
簡易チートシート
簡易Vimチートシート
keymap設定例のとこだけミスあり。
コメント