LoginSignup
8
12

More than 5 years have passed since last update.

Vimコマンドの文型の備忘録

Last updated at Posted at 2017-01-17

たまに頭が混乱するのでメモ

モード

モード 機能 切替方法
ノーマル カーソルの移動や文字列のヤンクなどができる 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 補完中止

ヘルプ

コマンド 機能
:h {command} ヘルプ

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

8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12