たまに頭が混乱するのでメモ
モード
モード | 機能 | 切替方法 |
---|
ノーマル | カーソルの移動や文字列のヤンクなどができる | 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)
ファイル移動
ファイル表示操作
コマンド | 機能 |
---|
: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 > | ウィンドウの幅を一文字減らす |
タブ
貼り付け方法の変更
コマンド | 機能 |
---|
:set paste | ペーストモードに(オートインデントされない) |
:set nopaste | noペーストモードに(オートインデントされる) |
補完
コマンド | 機能 |
---|
Ctrl-p | 補完表示 |
Ctrl-n | 次の候補へ(補完表示中) |
Ctrl-p | 前の候補へ(補完表示中) |
ヘルプ
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