読者です 読者をやめる 読者になる 読者になる

Vim歴2年の自分の成長止まりを憂う

vim使い始めて2年くらい経つけど、結構クセついてきてしまいたまに焦りがきます。

例えば、diw -> i とやり慣れてる人が、 ciwに移行するのって意識して努力しないと変わらない。

以下は、僕自身が習得しなければならない、より便利な機能をリスト化してみました。結構前にまとめたので、もう改善済みのも結構ある。

とりあえず、最近vim使えてきたな〜って人は、t/f,T/Fの高速移動やText Objectを覚えると、さらに1.1倍くらい楽しくなります。

Keys

key action
Ctrl + j,k,h,l インサートモード中に移動
ca" "ごと"内を削除
ge 前の単語の末尾に移動
S 現在の行を消してインサートモード
s カーソル下の一文字を消してインサートモード
C カーソルより右を消してインサートモード
ZZ :wqと同じ
dG 現在行以下をすべて削除
Ctrl + p インサートモード時に前方単語補完
Ctrl + n インサートモード時に後方単語補完
:r! + CMD コマンド実行結果を貼り付け
gJ スペースを含まず行結合
5J 現在行以下5行を一括行結合
]m 次のメソッドの始めに移動
]M 次のメソッドの終わりに移動
[m 前のメソッドの始めに移動
]M 前のメソッドの終わりに移動
{ 前の空行へ移動
} 次の空行へ移動
% 対応する括弧や予約語に移動
* カーソル下の単語を後方検索
# カーソル下の単語を前方検索
g* カーソル下の単語を後方部分検索
g# カーソル下の単語を後方部分検索
+ 下の行頭に移動
- 上の行頭に移動
g; 直前の変更箇所に戻る
g, 直前の変更箇所に進む
:noh 検索結果のハイライトを解除
W,B,E,gE
q + 文字 レコード開始(qで終了)
@ + 文字 レコード再生
q: コマンド履歴を表示
q/, q? 検索履歴を表示
gg=G 全行インデント(V+G+=と動きは同じ)
R 上書きモード
Ctrl + [ コマンドモードに戻る(=esc)
Ctrl + z 一時停止(vimで戻る)
yy5p 行をコピーし、下に5行分ペースト
gv 直前の選択を再選択
ma マークaをつける
`a マークaに移動
'a マークaのある行の先頭に移動
y`a 現在のカーソル位置からマークaまでをコピー
v`a 現在のカーソル位置からマークaまでを選択
:marks マーク一覧を表示
"ayy レジスタaにコピー(aをAにすると現在保持しているテキストの末尾に追加される)
"ap レジスタaをペースト
:reg レジスタ一覧を表示
:reg a b レジスタa,bを表示
@: 直前に実行したコマンドを実行
:g/^$/d 空行削除
u 小文字に変換
U 大文字に変換
~ 小文字は大文字に、大文字は小文字に変換
gQ Exモード(連続でコマンドを使用できる)
:e ファイルを開く
:r ファイルを読み込み現在編集中のファイルにペースト
gt 次のタブに切替
gT 前のタブに切替

Text Object

dcと組み合わせて使用する。

key action
iw 単語(以降iの部分はaでも代用可能)
iW 単語(空白含む)
is
it タグ
i] 括弧("",'',(),<>,{})なども対応可能)

以上。 他におすすめあったら是非教えて欲しいです!

以下は、おまけ。 vimの標準ファイルツリー。

netrw.vim

Vimの便利なファイルブラウザ。

Keys

key action
:h netrw 使い方をみる
:Explore(Ex)[!] [dir] カレントファイルのディレクトリを開く。:e .でも同じ。
:Hexplore[!] [dir] 水平分割 & Explore
:Nexplore[!] [dir] 垂直分割 & Explore
:Pexplore[!] [dir] 垂直分割 & Explore
:Rexplore Explorer に戻る
:Sexplore[!] [dir] ウィンドウ分割 & Explore
:Texplore[!] [dir] タブ & Explore
:Vexplore[!] [dir] 垂直分割 & Explore
i 表示方法を切り替える (thin, long, wide, tree)
s ソート方法を変える: name, time, file size
r ソート順を逆にする
a 隠しファイルの表示を切り替える
gh ドットファイルの表示/非表示を切り替える
p ファイルをプレビューする
qf ファイル情報を表示する
- 一つ上のディレクトリに移動する
u 最近訪れたディレクトリに移動する(undo的な)
U 次に訪れたディレクトリに移動する(redo的な)
t カーソル位置のファイル/ディレクトリを新しいタブで開く
o カーソル位置のファイル/ディレクトリを新しいウィンドウで開く。水平分割。
v カーソル位置のファイル/ディレクトリを新しいウィンドウで開く。垂直分割。
gt 次のタブに切替
gT 前のタブに切替
P 直前に使用していたウィンドウで開く
d ディレクトリを作成する
D ファイル/ディレクトリ(複数可)を削除する(マークしたファイルがある場合には、マークしたファイルを削除)
R ファイル/ディレクトリ(複数可)の名前を変える
mf ファイルをマーク/アンマークする
md マークしたファイルの差分を表示する (3ファイルまで)
mz マークしたファイルを圧縮/伸長する
mr シェル形式正規表現 (regexp) でファイルをマークする
mt 表示中のディレクトリをターゲットディレクトリにする
mc マークしたファイルをターゲットディレクトリにコピー
mm マークしたファイルをターゲットディレクトリに移動
mv マークしたファイルに対して任意のVimコマンドを実行
mx マークしたファイルに対して任意のシェルコマンドを実行
mX マークしたファイルに対して任意のシェルコマンドを一括実行
mu すべてのマークを解除する
mb カレントディレクトリをブックマークする
qb ブックマークと履歴の一覧を表示する
gb 前のブックマークされたディレクトリに移動