たまに頭が混乱するのでメモ
モード
モード |
機能 |
切替方法 |
ノーマル |
カーソルの移動や文字列のヤンクなどができる |
vimを起動したとき、もしくは「esc」を押す |
挿入 |
文字列の挿入ができる |
ノーマルモードで「i」「a」「I」「A」のいずれかを押す |
ビジュアル |
矩形選択ができる |
ノーマルモードで「v」「V」「Ctrl+v」のいずれかを押す |
exコマンド |
ファイルの保存や文字列の検索ができる |
ノーマルモードで「:」「/」「?」のいずれかを押す |
文型
文型 |
型 |
第1文型(C) |
{command} |
第2文型(M) |
{motion} |
第3文型(OM) |
{operator}{motion} |
第4文型(SO) |
{selector}{operator} |
第5文型(OT) |
{operator}{text-object} |
品詞
コマンド |
機能 |
コマンド(C) |
それ一つで編集(編集対象と編集方法)が完結する操作 |
モーション(M) |
基本的に行を示す操作。カーソルの移動にも使う |
オペレーター(O) |
編集方法を示す操作 |
セレクター(S) |
行列(矩形)の編集範囲を示す操作 |
テキストオブジェクト(T) |
編集するテキストを示す操作。記号などで囲まれているものの中を編集範囲にできる |
カウント |
各文の繰り返し回数を示す操作 |
第一文型(C)
スクロール移動
コマンド |
機能 |
Ctrl-u |
半画面分の上へ(アップ) |
Ctrl-d |
半画面分の下へ(ダウン) |
Ctrl-b |
一画面分の上へ(バックフォワード) |
Ctrl-f |
一画面分の下へ(フォワード) |
行に対する編集
コマンド |
機能 |
dd |
カーソルのある行デリート |
D |
カーソルから行末までデリート |
cc |
カーソルのある行カット |
C |
カーソルから行末まで行カット |
yy |
カーソルのある行までヤンク |
Y |
カーソルから行末までヤンク |
s |
カーソルのある文字を消して挿入モードに入る |
S |
カーソルのある1行を全て消して挿入モードにはいる |
カットとプット
コマンド |
機能 |
x |
カーソルの下の文字を消す |
X |
カーソル一つ前の下の文字を消す |
p |
カーソルの下の行にプット |
P |
カーソルの行にプット |
数値の編集
コマンド |
機能 |
Ctrl-a |
カーソルのある行の数値を足す(インクリメント) |
Ctrl-x |
カーソルのある行の数値を減らす(デクリメント) |
アンドゥ・リドゥー、 繰り返し
コマンド |
機能 |
u |
アンドゥー |
Ctrl-r |
リドゥー |
. |
直前のコマンドを繰り返す |
インデントの編集
コマンド |
機能 |
>> |
インデントをつける |
<< |
インデントをなくす |
ctrl-t |
挿入モードでインデントを追加 |
ctrl-d |
挿入モードでインデントを削除 |
挿入
コマンド |
機能 |
i |
カーソル位置からインサートモードに入る |
a |
カーソルの直後からインサートモードに入る |
I |
行頭からインサートモードに入る |
A |
行末からインサートモードに入る |
第二文型(M)
基本移動
コマンド |
機能 |
h |
カーソルを左にずらす |
j |
カーソルを下に下げる |
k |
カーソルを上に上げる |
l |
カーソルを右にずらす |
gj |
カーソルを下に下げる(折り返しにも対応している) |
gk |
カーソルを上に上げる(折り返しにも対応している) |
基本行移動
コマンド |
機能 |
+ |
下の行の先頭へ |
- |
上の行の先頭へ |
_ |
-1 行下の最初の非空白文字に移動 |
gg |
そのファイルの先頭へ(Goto) |
G |
そのファイルの末尾へ(Goto) |
オブジェクト単位で移動
コマンド |
機能 |
( |
文後方に |
) |
文前方に |
{ |
段落後方に |
} |
段落前方に |
[[ |
セクション前方に、もしくは1桁目が '}' で始まる次の場所に。 |
]] |
セクション後方に、もしくは1桁目が '}' で始まる次の場所に。 |
[] |
セクション後方に、もしくは1桁目が '}' で始まる次の場所に。 |
][ |
セクション前方に、もしくは1桁目が '}' で始まる次の場所に。 |
行頭行末移動
コマンド |
機能 |
0 |
行の先頭へ |
^ |
行の先頭へ(正規表現のアンカーと一緒) |
$ |
行の末尾へ(正規表現のアンカーと一緒) |
単語の単位で移動
コマンド |
機能 |
w |
次の単語の先頭に進む(ワード) |
W |
次の単語(記号では区切られれていない)の先頭に進む |
b |
次の単語の先頭に戻る(バッグ) |
B |
次の単語(記号では区切られれていない)の先頭に戻る |
e |
今の単語の末尾に進む(エンド) |
E |
今の単語(記号では区切られれていない)の末尾に進む |
ge |
前の単語の末尾に戻る(Gotoエンド) |
gE |
前の単語(記号では区切られれていない)の末尾に戻る(Gotoエンド) |
行内で検索して移動
コマンド |
機能 |
fa |
次のaまで飛ぶ |
Fa |
前のaまで飛ぶ |
ta |
次のaの手前まで飛ぶ |
Ta |
前のaの次まで飛ぶ |
; |
f, F, t, Tで検索した文字を同方向に繰り返し検索する |
, |
f, F, t, Tで検索した文字を逆方向に繰り返し検索する |
% |
ついになる括弧に移動 |
/ |
|
検索して移動
コマンド |
機能 |
/word |
文字列wordを検索(上から下へ) |
?word |
文字列wordを検索(下から上へ) |
* |
カーソルより下の文字を検索する |
# |
カーソルより上の文字を検索する |
n |
次の候補に |
N |
前の候補に |
オペレーター(O)
デリート・カット・ヤンク
コマンド |
機能 |
d |
選択範囲をデリート |
c |
選択範囲をカットして挿入モードに移行する |
y |
選択範囲をヤンク |
インデント
コマンド |
機能 |
> |
右にシフトする |
> |
左にシフトする |
! |
外部コマンドを使ってフィルターに通す |
= |
インデント整える |
大文字小文字入れ替え
コマンド |
機能 |
~ |
大文字/小文字を入れ換える |
g~ |
大文字/小文字を入れ換える |
gu |
小文字にする |
gU |
大文字にする |
折りたたみ関係
コマンド |
機能 |
zi |
折り畳みの有効無効の切り替え |
zf |
折り畳みを作成する |
za |
折り畳みの開け閉め |
zd |
折り畳みを削除する |
zA |
折り畳みの開け閉め(再帰) |
zD |
折り畳みを削除する(再帰) |
zE |
全ての折り畳みを削除 |
zR |
全ての折り畳みを開く |
zM |
全ての折り畳みを閉じる |
第三文型(OM)
単語に対する編集コマンド
コマンド |
機能 |
yw |
カーソル下のワードをヤンク |
cw |
カーソルの下のワードをカット |
dw |
カーソル下のワードをデリート |
行に対する編集
コマンド |
機能 |
d$ |
カーソルから行末までデリート |
c$ |
カーソルから行末までカット |
y$ |
カーソルから行末までヤンク |
dG |
カーソル行以下をデリート |
cG |
カーソル行以下をカット |
yG |
カーソル行以下をヤンク |
ggVG |
全選択 |
カッコを閉じる
コマンド |
機能 |
f{ zf % |
{の括弧を閉じる |
space |
選択範囲を開ける |
セレクター(S)
コマンド |
機能 |
v |
文字単位で選択 |
Ctrl-v |
ブロック単位で選択 |
V |
行単位で選択 |
第四文型(SO)
複数行のインデントの操作
コマンド |
機能 |
Ctrl-V j = |
行を矩形選択して、「=」でインデントを揃える |
複数行の行頭・行末に同じ文字を挿入する
コマンド |
機能 |
Ctrl-v j $ A 文字入力 esc |
行末同じ文字列を入れる |
Ctrl-v I $ A 文字入力 esc |
行頭同じ文字列を入れる |
複数行のある行又は列の文字列を削除・挿入・置換する
コマンド |
機能 |
Ctrl-V j d |
任意の行列を削除する |
Ctrl-v j d |
任意の列を削除する |
Ctrl-V j c 文字入力 |
任意の行列を挿入する |
Ctrl-v j c 文字入力 |
任意の列を挿入する |
Ctrl-v j i 文字入力 esc |
任意の列に同じ文字列を入れる |
Ctrl-v j d 文字入力 esc |
任意の列に同じ文字列を入れる |
Ctrl-V j d 文字入力 esc |
任意の行を文字列を入れる |
Ctrl-v r 文字入力 |
任意の列を置き換えるする |
Ctrl-V r 文字入力 |
任意の行列を置き換えるする |
複数行削除
コマンド |
機能 |
Ctrl-V j I 文字入力 esc |
ある列に同じ文字列を入れる |
選択範囲を閉じる
コマンド |
機能 |
Ctrl-V zf |
選択範囲を閉じる |
space |
選択範囲を開ける |
テキストオブジェクト(T)
テキストオブジェクトのプレフィックス?
コマンド |
機能 |
{Operator} a {Text object} |
対象のオブジェクとのその中身に対してオペーレーターの操作をする(a) |
{Operator} i {Text object} |
対象のオブジェクの中身に対してオペーレーターの操作する(inner) |
テキストオブジェクト
コマンド |
機能 |
w |
単語を区切りそうな文字列まで |
W |
非空白文字の連続 |
[,(,{,<,",` |
左の記号で囲まれている文字列 |
b |
ブロック。() 等カーソル位置から直近の囲み文字の範囲(前方一致) |
B |
block ブロック。() 等カーソル位置から直近の囲み文字の範囲(後方一致) |
t |
タグ |
第五文型(OT)
プレーンテキストの文字の中身消し
コマンド |
機能 |
dit |
カーソルのある行の最初のタグの中身を消す |
cit |
カーソルのある行の最初のタグの中身を消して挿入モードへ移行する |
diw |
カーソルのある行の最初の単語の中身を消す |
ciw |
カーソルのある行の最初の単語の中身を消して挿入モードへ移行する |
dis |
カーソルのある行の最初のセンテンスの中身を消す |
cis |
カーソルのある行の最初のセンテンスの中身を消して挿入モードへ移行する |
dip |
カーソルのある行の最初のパラグラフの中身を消す |
cip |
カーソルのある行の最初のパラグラフの中身を消して挿入モードへ移行する |
プログラミング言語の文字の中身消し
コマンド |
機能 |
di" |
カーソルのある行の最初の"の中身を消す |
ci" |
カーソルのある行の最初の"の中身を消して挿入モードへ移行す |
di[ |
カーソルのある行の最初の[の中身を消す |
ci[ |
カーソルのある行の最初の[の中身を消して挿入モードへ移行す |
同じ文字列をの置換
コマンド |
機能 |
* n cw esc n . |
*で見つかったワード一つ一つを置換する |
:/%s/word/word2 |
wordをword2にいっぺんに置換する |
その他の第一文型(C)
ファイル移動
コマンド |
機能 |
Ctrl-o |
戻る |
Ctrl-t |
進む |
ファイル表示操作
コマンド |
機能 |
:e filename |
filenameを現在のウィンドウで開く(:edit) |
:sp filename |
filenameを横分割したウィンドウで開く(:split) |
:vs filename |
filenameを縦分割して開く(:vsplit) |
:sv filename |
filenameを横分割で読み取り専用で開く(:sview) |
ファイル保存操作
コマンド |
機能 |
:w hoge.txt |
hoge.txtという名前つけて保存 |
:q |
ウィンドウを閉じる |
:wq |
保存して終了 |
:q! |
保存せずウィンドウを閉じる |
:qa! |
保存せず全てのウィンドウを閉じる |
ウィンドウ
コマンド |
機能 |
Ctrl-w h |
左のウィンドウへ |
Ctrl-w j |
下のウィンドウへ |
Ctrl-w k |
上のウィンドウへ |
Ctrl-w l |
右のウィンドウへ |
Ctrl-w _ |
選択中のウィンドウの最大化 |
Ctrl-w = |
ウィンドウを全て同じ大きさに |
Ctrl-w + |
ウィンドウの高さを一行減らす |
Ctrl-w - |
ウィンドウの高さを一行増やす |
Ctrl-w < |
ウィンドウの幅を一文字減らす |
Ctrl-w > |
ウィンドウの幅を一文字減らす |
タブ
コマンド |
機能 |
gt |
次のタブへ |
gT |
前のタブへ |
貼り付け方法の変更
コマンド |
機能 |
:set paste |
ペーストモードに(オートインデントされない) |
:set nopaste |
noペーストモードに(オートインデントされる) |
補完(挿入モードのサブモード)
コマンド |
機能 |
Ctrl-x |
サブモードのプレフィックス |
Ctrl-x Ctrl-o |
Omni補完表示 |
Ctrl-x Ctrl-n |
局所キーワード補完(前方) |
Ctrl-x Ctrl-p |
局所キーワード補完(後方) |
Ctrl-n |
次の候補へ(補完表示中) |
Ctrl-p |
前の候補へ(補完表示中) |
CTRL-e |
補完中止 |
ヘルプ
References
http://vim-jp.org/vimdoc-ja/
http://qiita.com/takeharu/items/9d1c3577f8868f7b07b5
http://vimdoc.sourceforge.net/htmldoc/scroll.html
http://nanasi.jp/articles/howto/editing/blockwise-operation.html
http://www.webhtm.net/vim/mode.htm
http://qiita.com/satomyumi/items/755cfbb0e97d48280775#cit
http://shinespark.hatenablog.com/entry/2015/11/12/070000
http://motw.mods.jp/Vim/command.html
:h
http://blog.carbonfive.com/2011/10/17/vim-text-objects-the-definitive-guide/
http://qiita.com/b4b4r07/items/7fc12842d03e7e46412c
http://reddog.s35.xrea.com/wiki/Vim%20%E6%8A%98%E3%82%8A%E7%95%B3%E3%81%BF.html
http://daisuzu.hatenablog.com/entry/2015/12/05/002129