vim入門 ~備忘録~

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設定例のとこだけミスあり。