version
vim 7.4.2210
Index
|A|B|C|D|E|F|G|H|I|J|K|L|M|N|
|O|P|Q|R|S|T|U|V|W|X|Y|Z|
| 0 | ! | # | $ | ? | \ | @ | _ | ~ |
| [](#
) | ' | " | : | ; | , | . |
| ^ | % | & | | | | + | * | - | / | = |
| () | [] | <> | {} |
|<Space>|<Enter>|<Esc>|
#<A>
a
右に一文字移動して挿入モード
A
行末に移動して挿入モード
^a
カーソルから右方向にある数値をインクリメント
3days
↓
4days
※^x:デクリメント
#<B>
b
前単語先頭へ移動
- 単語はアルファベット、数値、その他の非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123
,あいう
,567
,<<>>
の4単語
※w:次単語先頭へ移動
B
前単語先頭へ移動
- 単語は非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123あいう
,567<<>>
の2単語
※W:次単語先頭へ移動
^b
PageUp
※^f:PageDown
#<C>
c
d(切り取り)と同様の動作後に挿入モード
C
Dと同様の動作後に挿入モード
^c
(検索)コマンド中断
#<D>
d
切り取り
補足
切り取り範囲の指定は以下の方法がある
※c, yと同様
- 移動系のコマンドとの併用。d[移動系コマンド]で実行
例) dw:単語削除, dgg:カーソル位置から先頭行まで削除等 - dd:行切り取り
- visualモードとの併用
D
行末まで切り取り
^d
半PageDown
※^u:半PageUp
#<E>
e
次単語末尾へ移動
- 単語はアルファベット、数値、その他の非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123
,あいう
,567
,<<>>
の4単語
※ge:前単語末尾へ移動
E
次単語末尾へ移動
- 単語は非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123あいう
,567<<>>
の2単語
※gE:前単語末尾へ移動
^e
1行下にスクロール(※カーソルは動かない)
※^y:1行上にスクロール(※カーソルは動かない)
#<F>
f
fxでカーソルの右に位置するxにカーソル移動(※xは任意の文字)
※tと類似
F
Fxでカーソルの左に位置するxにカーソル移動(※xは任意の文字)
※Tと類似
^f
PageDown
#<G>
g
prefix的なコマンド,gxx(xxは任意のキー入力)で様々な動作を実行する
補足
g打鍵後、入力対象のキーおよび動作は下記リンクを参照
vimのノーマルモードのコマンドまとめ(その2)
G
最終行の行頭へ移動
^g
ステータスラインにカーソル情報表示
#<H>
h
左に一文字移動。<Left>と同じ
H
画面表示されてる範囲の先頭行にカーソル移動
^h
左に一文字移動(改行またぐ)
※<BS>と同じ動作
#<I>
i
挿入モードに切替
I
行頭(空白文字を除く)に移動して挿入モードに切替
^i
ジャンプリストの次の位置へ移動
※^o:ジャンプリストの前の位置へ移動
補足
ジャンプリストはジャンプコマンドの履歴。履歴は:ju[mps]
で確認できる
※ジャンプコマンド:バッファ間移動,検索,マーク移動,gg
,G
等
#<J>
j
次行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)。<Down>と同じ
※gj:下に一文字移動(行折り返し時は同行に移動)
J
間にスペース文字を入れて次行と行連結
※gJ:間にスペースを入れず次行と行連結
^j
jと同じ
※^n:jと同じ
#<K>
k
前行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)。<Up>, ^pと同じ
※gj:上に一文字移動(行折り返し時は同行に移動)
K
カーソル下の単語を引数にコマンド実行。デフォルトのコマンドはman -s
コマンドはset keywordprg
で変更
^k
未定義
#<L>
l
右に一文字移動。<Right>と同じ
L
画面表示されてる範囲の最下行にカーソル移動
^l
再描画
#<M>
m
mxで現在のカーソル位置をマーク(xはマーク記号)
※`xでマークした位置に移動、'xでマークした位置の行頭へ移動
補足
- xはa~z,A~Z,[ ] > < ` 'が指定可能
- オペレータコマンド(d等)と併用可能
例) d'x:現在位置から'xマーク位置まで切り取り - 大文字のマークはファイルをまたいだ移動が可能
※ファイルをまたぐ場合はオペレータコマンドとの併用不可 - マークの一覧は
:marks
で確認可能
参考
:help mark
M
画面表示されてる範囲の中央行にカーソル移動
^m
次行の最初の非空白文字へ移動
※+と同じ
補足
端末では^mは<Enter>を意味する
#<N>
n
次検索(検索未実行時は何もしない)
N
前検索(検索未実行時は何もしない)
^n
次行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)
※jと同じ
#<O>
o
下に行を追加して、追加行に移動してから挿入モード
O
上に行を追加して、追加行に移動してから挿入モード
^o
ジャンプリストの前の位置へ移動
※^i:ジャンプリストの次の位置へ移動
#<P>
p
カーソル位置から後ろに貼り付け
P
カーソル位置から前に貼り付け
^p
前行に移動(移動後の行のカラム位置は移動前の行のカラム位置となる)
※kと同じ
#<Q>
q
- qxでキー操作の記録を開始、xは記録先レジスタ名(下記参照)
- qでキー操作の記録を終了
補足
- xはa~z, A~Z, 0~9が指定可能
- @xで記録したキー操作を再実行
- @@で直前に実行したキー操作を再実行
Q
Exモードの切り替え
※現在のファイルをExエディタで開く
^q
未定義。
※Windowsにて^Vが貼り付けとなっている場合、^qで矩形選択になる
#<R>
r
rxでカーソル配下の文字をxで置き換え(※xは任意の文字)
R
Replaceモード(上書きモード)に切り替え
- 全角文字1文字は半角文字1文字で置き換わる(行末までの文字が前に移動してくる)
- gR なら全角文字1文字は半角文字2文字で置き換わる(行末までの文字移動しない)
^r
redo
#<S>
s
カーソル配下の文字を切り取りしてから、挿入モード
※clと同じ
S
行切り取り(※改行は含まない)してから、挿入モード
※ccと同じ
^s
未定義。
※端末によって画面スクロールロックが有効になることがある。その場合は^qで画面スクロールロック解除。
#<T>
t
txでカーソルの右に位置するxの手前にカーソル移動(※xは任意の文字)
※fと類似
T
Txでカーソルの左に位置するxの手前にカーソル移動(※xは任意の文字)
※Fと類似
^t
タグで移動していた場合、移動前の位置に戻る
#<U>
u
undo
U
現在行のみの変更を戻す
^u
半PageUp
※^d:半PageDown
#<V>
v
通常のvisualモードに切り替え
V
行選択のvisualモードに切り替え
^v
矩形選択のvisualモードに切り替え
※Windowsにて^vが貼り付けとなっている場合^qで矩形選択になる
#<W>
w
次単語先頭へ移動
- 単語はアルファベット、数値、その他の非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123
,あいう
,567
,<<>>
の4単語
※b:前単語先頭へ移動
W
次単語先頭へ移動
- 単語は非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123あいう
,567<<>>
の2単語
※B:前単語先頭へ移動
^w
prefix的なコマンド,^wxx(xxは任意のキー入力)で主にWindow操作を実行する
補足
^w打鍵後、入力対象のキーおよび動作は下記リンクを参照
vimのノーマルモードのコマンドまとめ(その3)
#<X>
x
カーソル配下の文字を切り取り
※dlと同じ
X
カーソル手前の文字を切り取り
※dhと同じ
^x
カーソルから右方向にある数値をデクリメント
3days
↓
2days
※^a:インクリメント
#<Y>
y
コピー
補足
コピー範囲の指定は以下の方法がある
※c, dと同様
- 移動系のコマンドとの併用。y[移動系コマンド]で実行
例) yw:単語コピー, ygg:カーソル位置から行頭までコピー等 - yy:行コピー
- visualモードとの併用
Y
行コピー
※yyと同じ
^y
1行上にスクロール(※カーソルは動かない)
※^e:1行下にスクロール(※カーソルは動かない)
#<Z>
z
prefix的なコマンド,zx(xは任意のキー入力)で様々な動作を実行する
補足
z打鍵後、入力対象のキーおよび動作は下記リンクを参照
vimのノーマルモードのコマンドまとめ(その2)
Z
- ZZ:変更点があれば保存して、終了
- ZQ:保存せず、終了(変更点は破棄)
^z
vimを中断(端末上で^z打鍵した状態にする)
0
行頭へ移動
- ^ は空白を除く行頭に移動
!
!
![移動系コマンド]で対象範囲のテキストを外部プログラム(bash等)の指定したコマンドで処理する
補足
- テキスト範囲は行単位
※そのため、移動系コマンドがh等の場合は行が変化しないため、対象は現在行のみになる - !打鍵後は外部プログラムのコマンドを適当に入力
例
現在行から下3行にあるスペース文字を除去
-
!3j
と入力 -
tr -d " "
と入力してEnter
!!
現在行のテキストを外部プログラム(bash等)の指定したコマンドで処理する
※!l
または!h
と同じ
#
現在位置から最も近い単語の後方検索を実行
※ *:現在位置から最も近い単語の前方検索を実行
補足
最も近いの基準は以下
- カーソル位置の単語
- 現在行の、カーソルの後ろの最初の単語
$
行末に移動
※<End>と同じ
?
?
?[検索文字]の入力後、Enterで入力した検索文字の後方検索を実行
※ /[検索文字]:前方検索実行
※ n:次検索(前方再検索)
※ N:前検索(後方再検索)
??
最後に検索した文字列で後方検索を実行
※ //:最後に検索した文字列で前方検索実行
?[検索文字]?[offset]と??[offset]
?, ??での後方検索実行後、指定したoffset位置に移動
補足(/の補足と同様の内容)
・n:現在の検索文字で次検索実行, N:現在の検索文字で前検索実行
・offset
指定内容 | 動作 |
---|---|
[数値] | [数値]行下、1 桁目に移動 |
+[数値] | [数値]行下、1 桁目に移動 |
-[数値] | [数値]行上、1 桁目に移動 |
e[+数値] | [数値]文字右に終わりの場所から移動 |
e[-数値] | [数値]文字左に終わりの場所から移動 |
s[+数値] | [数値]文字右に初めの場所から移動 |
s[-数値] | [数値]文字左に初めの場所から移動 |
b[+数値] | s[+数値] と同じ |
b[-数値] | s[-数値] と同じ |
; | 検索位置から続けて検索 例) /aaa/;?bbb?
|
- 検索文字列は正規表現。ただし、デフォルトでは一部のメタ文字はエスケープ「\」の指定が必要
- メタ文字のエスケープ指定は検索文字の前にオプションを指定することで変更可
参考:
Vimでパターン検索するなら知っておいたほうがいいこと
vim上で:help magic
\
\
未定義
^\
未定義
@
@x
xに記録したキーマクロを実行
補足
キーマクロの記録方法は以下(※q)
- qx:キーマクロをxに記録開始
- q:キーマクロの記録を終了する
@@
直前に実行したキーマクロを再度実行する
@:
直前に実行したコマンド(:[command]
)を再実行する
_
_
非空白な行頭位置へ移動
※g_:非空白な行末位置へ移動
補足
-
^
と異なり、回数指定が可能 -
[数値]_
で([数値] - 1)行下の非空白な行頭位置へ移動
^_
未定義
~
~
カーソル下の文字を大文字を小文字、小文字を大文字に切り替えてカーソルを右に移動
` '
`[a-z], '[a-z]
- `xでxにマークしてある位置へジャンプ
- 'xでxにマークしてある行の非空白な行頭位置へジャンプ
- ファイルをまたいでの移動は不可
`[A-Z0-9], '[A-Z0-9]
- `xでxにマークしてある位置へジャンプ
- 'xでxにマークしてある行の非空白な行頭位置へジャンプ
- ファイルをまたいで、移動可
※ファイルをまたぐ場合はオペレータコマンド(y等)との併用不可
補足
- [a-zA-Z]はmxでマークできる(※m)
- [0-9]はvim終了時の位置が記録してある
※ 端末にてvim -c "normal '0"
で最後に終了したファイルを表示
`[ '[ `] '] `< '< `> '> `` '' `" '" `^ '^ `. '.
文字 | 移動場所 |
---|---|
`[,'[ | 直前に変更もしくはコピーしたテキストの最初の文字位置(`),位置行頭(') |
`],'] | 直前に変更もしくはコピーしたテキストの最後の文字位置(`),位置行頭(') |
`<,'< | visualモードで最後に選択したエリアの最初の文字位置(`),位置行頭(') |
`>,'> | visualモードで最後に選択したエリアの最後の文字位置(`),位置行頭(') |
``,'' | 前のジャンプ位置(`),位置行頭(') |
`",'" | バッファを最後に終了した時点の位置(`),位置行頭(') |
`^,'^ | 最後に挿入モードを終了した時点の位置(`),位置行頭(') |
`.,'. | 最後に変更した位置付近(`),位置行頭(') |
補足
- "での移動は再度バッファを開くことで利用可(バッファを再表示するわけではない)
- ],[ は変更したテキストがなかった場合,
[ はファイルトップ、]はファイルの最後に移動
また、undoでテキストを戻した場合は行頭へ移動
注意)
上記補足はヘルプファイルに記載が見当たらず、私の環境で確認した動作のため、正式に定義してある動作ではありません
`( '( `) ') `{ '{ `} '}
文字 | 移動場所 |
---|---|
`(,'( | 現在の文の最初に移動。 ( と同じ |
`),') | 現在の文の最後に移動。 ) と同じ |
`{,'{ | 現在の段落の最初に移動。 { と同じ |
`},'} | 現在の段落の最後に移動。 } と同じ |
補足
これらはマークではない(:marks
で表示しない)
"
"[a-zA-Z0-9.%#:-"*][切り取り/コピー/貼り付けコマンド]
- "x[切り取り/コピーコマンド]でxレジスタに[切り取り/コピー]したテキストを格納
- "x[貼り付けコマンド]でxレジスタに格納してあるテキストを貼り付け
補足
- [切り取り/コピー/貼り付けコマンド]はd,y,x,c,s,p等が該当
- レジスタxに関しては以下表を参照
x | 名前 | 説明 |
---|---|---|
" | 無名レジスタ | 未指定で利用できるレジスタ 例えば、 Y と""Y は同じ意味 |
a-z | 名前付きレジスタ | 格納先を(26個まで)指定可能なレジスタ |
A-Z | 名前付きレジスタ | 該当のa~zレジスタに格納したテキストを追加する |
0 | 番号付きレジスタ | 直近のコピーテキストを格納 |
1 | 番号付きレジスタ | 直近の一行超過の切り取りテキストを格納 |
- | 小削除用レジスタ | 直近の一行以下の切り取りテキストを格納 |
2-9 | 番号付きレジスタ | 一行超過の切り取りテキストの履歴を2〜9に順次格納 |
. | 読取専用レジスタ | 最後に挿入モードで入力したテキストを格納 |
% | 読取専用レジスタ | カレントファイル名を格納 |
: | 読取専用レジスタ | 最後に実行したコマンドライン文字列を格納 |
# | 代替ファイルレジスタ | 代替ファイル(大抵は一つ前に開いていたファイル名) |
= | Expressionレジスタ | vim scriptを実行し、出力する。※挿入モードで使用 |
* | 選択範囲レジスタ | クリップボードのテキストを格納 |
+ | 選択範囲レジスタ | クリップボードのテキストを格納 |
~ | 選択範囲レジスタ | ドラッグアンドドロップした際のテキストを格納 |
- | ブラックホールレジスタ | テキストを削除する ※他のレジスタに影響を与えない |
/ | 最終検索パターン用レジスタ | 最後に検索したテキスト文字列を格納 |
注意)
*と+は参照する記憶領域に違いがある。
*はプライマリバッファ、+はクリップボードバッファ
基本的はプライマリバッファを利用している*を使用
参考:
vim-jp x11-selection
クリップボード-ArchWiki
:
コマンドモードに切り替え
;
直前に実行したfx,tx,Fx,Txを実行する(※xは任意の文字)
※F, T
,
直前に実行したfx,tx,Fx,Txを反対方向へ実行する(※xは任意の文字)
※F, T
.
最後の変更を繰り返す(※コマンドラインコマンドは実行しない)
^
非空白の行頭文字へ移動
Ctrl + ^
直前に編集していたバッファファイルに切り替え
[数値]Ctrl + ^
[数値]番目のバッファファイルに切り替え
%
現在位置に最も近い対応括弧に移動する
※括弧文字に関してはset matchpairs
で決定する
&
最後に実行した置換処理を再実行する
|
[数値]|
現在行の[数値]桁位置に移動
+
次行の最初の非空白文字へ移動
※1.^mと同じ
※2.-:前行の最初の非空白文字へ移動
*
現在位置から最も近い単語の前方検索を実行
※#:現在位置から最も近い単語の後方検索を実行
-
前行の最初の非空白文字へ移動
※+:次行の最初の非空白文字へ移動
/
/
/[検索文字]の入力後、Enterで入力した検索文字の前方検索を実行
※ ?[検索文字]:後方検索実行
※ n:次検索(後方再検索)
※ N:前検索(前方再検索)
//
最後に検索した文字列で前方検索を実行
※ ??:最後に検索した文字列で後方検索実行
/[検索文字]/[offset]と//[offset]
/, //での前方検索実行後、指定したoffset位置に移動
補足(?の補足と同様の内容)
・n:現在の検索文字で次検索実行, N:現在の検索文字で前検索実行
・offset
指定内容 | 動作 |
---|---|
[数値] | [数値]行下、1 桁目に移動 |
+[数値] | [数値]行下、1 桁目に移動 |
-[数値] | [数値]行上、1 桁目に移動 |
e[+数値] | [数値]文字右に終わりの場所から移動 |
e[-数値] | [数値]文字左に終わりの場所から移動 |
s[+数値] | [数値]文字右に初めの場所から移動 |
s[-数値] | [数値]文字左に初めの場所から移動 |
b[+数値] | s[+数値] と同じ |
b[-数値] | s[-数値] と同じ |
; | 検索位置から続けて検索 例) /aaa/;?bbb?
|
- 検索文字列は正規表現。ただし、デフォルトでは一部のメタ文字はエスケープ「\」の指定が必要
- メタ文字のエスケープ指定は検索文字の前にオプションをしていすることで変更可
参考:
Vimでパターン検索するなら知っておいたほうがいいこと
vim上で:help magic
=
=[移動系コマンド]
[移動系コマンド]の範囲をset equalprg
で設定してある処理を実行
==
set equalprg
で設定してある処理を実行
補足
equalprg
の値が未設定時は組込みの文整形処理を実行
( )
(
文の前方へ移動
)
文の後方へ移動
[ ]
[ ]
prefix的なコマンド [x・]x (xは任意のキー入力)で主に移動系のコマンドを実行する
※p,Pを除き、全て移動系
補足
[ ・]打鍵後、入力対象のキーおよび動作は下記リンクを参照
vimのノーマルモードのコマンドまとめ(その3)
^[
- 入力中のコマンドをキャンセル
※キー操作記録等、キャンセルしないコマンドもある - ノーマルモード切り替え
※<Esc>と同じ
^]
カーソル配下のキーワード定義位置にジャンプ
※tagの設定が必要
<>
>[移動系コマンド]
[移動系コマンド]の範囲をset shiftwidth
設定値分、右にインデント
<[移動系コマンド]
[移動系コマンド]の範囲をset shiftwidth
設定値分、左にインデント
>>
set shiftwidth
設定値分、右にインデント
<<
set shiftwidth
設定値分、左にインデント
{}
{
段落の前方へ移動
}
段落の後方へ移動
<Space>
右に一文字移動
※ lと同じ
<Enter>
次行の最初の非空白文字へ移動
※^mと同じ
<Esc>
- 入力中のコマンドをキャンセル
※キー操作記録等、キャンセルしないコマンドもある - ノーマルモード切り替え
蛇足
動機
当初はvimでバインドキー設定の際、割当対象のキーに迷わないよう、押しやすくかつ利用の少ないキーの一覧を作ってみようかと考えておりました。
しかし、結局は全コマンドを確認する必要があると思ったので、折角だから勉強も兼ねてまとめてみることにしました。
感想
作成してみたところ、思ったより疲れました。とはいえ、便利そうなコマンドの再発見もあり、結構勉強になったので、最終的にはやってよかったと思います。
未記載のprefix的なコマンドである^w,[,],g,z
の動作をまとめた記事と当初の目的である推奨バインドキー一覧をまとめた記事もその内作成したいと思います。
2016/08/30 追記)
g,z
クリック後の動作まとめ作成しました。
vimのノーマルモードのコマンドまとめ(その2)
2016/09/18 追記)
^w,[,]
クリック後の動作まとめ作成しました。
vimのノーマルモードのコマンドまとめ(その3)