たまに頭が混乱するのでメモ
モード
| モード |
機能 |
切替方法 |
| ノーマル |
カーソルの移動や文字列のヤンクなどができる |
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