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現在の行の上に空白行を追加して挿入モードを開始

コピーや切り取り、貼り付け

x1文字単位の切り取り
dd1行カット
3dd3行カット
yyコピー
3yy3行コピー
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設定例のとこだけミスあり。


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78