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のある行の先頭に移動
ya | 現在のカーソル位置からマーク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 | 前のブックマークされたディレクトリに移動