Vimの基本的なコマンド
主に、自分が普段使っていなかったが使えるようにしたいコマンド集
参考資料:vimtutor(コマンドラインでvimtutorと打つと読める)
それぞれのコマンドの由来と関連付けると覚えやすく、そういう意味でこちらが非常に詳しいです。
移動・削除
表示上の行の移動 移動コマンドの前にg
行先頭へ移動 ^
上下の行の先頭へ移動 +
, -
半画面上下 ctrl + u
, d
(up, down)
1画面上下 ctrl + b
, f
(back, forward)
段落毎上下 {
, }
前のカーソル位置へ移動 ctrl + O
# older cursor positionでoらしい(参考リンク)
次のカーソル位置へ移動 ctrl + I
対応する括弧へ移動 括弧の上で%
#括弧の不一致によるデバッグ時に便利な操作
単語の削除(次の単語まで) dw
単語の削除(カーソル上の単語末まで)
コマンドモードのまま de
挿入モードに自動で変更 ce
行末まで削除 d$
挿入モードに変更 c$
オペレーターとしてのヤンク
一単語ヤンク yw
一行ヤンク y$
置換
コマンドモードのまま文字を置換 変更箇所にカーソルを置いてr
のあとに変更したい文字を入力
複数文字 R
→変更文字列→Esc
ある1行内の文字列の置換 :s/OLD/NEW/g
(gがなければ行の最初の一つのみ、gがあれば全て 以下同様)
指定行中の文字列置換 :#,# s/OLD/NEW/g
文書全体の文字列置換 :%s/OLD/NEW/g
一箇所ずつ確認 :s/OLD/NEW/gc
コピー&ペースト
ヤンクした内容を矩形選択でまとめてペースト ctrl+v → I
でブロック挿入モード後、ctrl+r "
表示関連
差分の表示 :diffsplit (ファイル名)
文字列の検索 (検索対象にカーソルを置いて) #
コードをPDF化 :hardcopy > filename.ps
でポストスクリプト形式でエクスポートし、コマンドラインでps2pdf filename.ps
でPDF形式に変換
行数非表示 :set nonumber
大文字/小文字に一括変換 矩形選択後にU
/u
コマンドの実行
外部コマンドを実行 :!(コマンド内容)
ファイルの入出力
部分選択し保存 矩形選択の後に:w $FIlLENAME
外部ファイルの挿入 :r $FILENAME
コマンド補完
コマンドモードで:
文字入力後にctrl + d
.vimrcでの設定
色々と設定はしていますがとりあえず1点だけ
マウススクロールによるカーソル移動
vimでのマウスの使い方については個人の好みの違いが大きいと思いますが、私はマウスのスクロールでカーソルを移動させる操作に慣れています。macのターミナルでは自然とそのような操作だったのですが、iTerm2へ切り替えた時にそのような挙動を示さなかったため、自分で設定する必要が生じました。
以下の通りに記載するとそれが可能になります(3行分ずつ上下するよう設定しています)。
noremap <ScrollWheelUp> 3k
noremap <ScrollWheelDown> 3j