Edited at

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

More than 1 year has passed since last update.

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
前のブックマークされたディレクトリに移動