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
d
やc
と組み合わせて使用する。
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 | 前のブックマークされたディレクトリに移動 |