「vimtutor」で基本操作を勉強したのち、最初につまづいたのが
「"diw" = 単語ごとに削除」
でした。コマンドから意味が推測出来ない。。
色々調べてみたところ、"d"を「operator」、"iw"を「text-object」と言うそうです。勉強したついでに整理してみました。
コマンド入力ルール
"回数" + "操作" + "範囲" + "単位" の組み合わせで決定する。
- "回数"は省略可能。(省略した場合は"1"回)
- "範囲"は"操作"によっては省略可能。(省略した場合は"a"選択と同様)
上記ルールに則って、操作、範囲、単位の引き出しを増やしていけばOKのようです。
詳しくは以下を参照。
操作(operator)
ざっくりと代表的なものだけ載せておきます。 | コマンド | 説明 | |:-------:|:----------| | d | 削除 (delete) | | y | コピー (yank) | | p | 貼付け (paste) | | c | 削除+挿入(change) |
範囲
コマンド | 説明 | 詳細 |
---|---|---|
a | 単一 (冠詞の'a') | 区切り文字を含める。 |
i | 内側 (inner) | 区切り文字を含めない。 |
おそらく一番分かりにくいのがココです。
区切り文字とは、"単位"を区切る文字のことです。
"w"なら空白文字、"t"ならHTMLタグなど。
例1:「this is a pan.」に対する適用範囲(カーソルが先頭"t"に当たった状態)
- "aw" は「this 」 (空白文字(半角スペース)を含める)
- "iw" は「this」 (空白文字(半角スペース)を含めない)
例2:「<p>this is a pan.</p>
」に対する適用範囲(カーソルが先頭"<"に当たった状態)
- "at" は「
<p>this is a pan.</p>
」 (HTMLタグを含める) - "it" は「this is a pan.」 (HTMLタグを含めない)
単位
文字
コマンド | 説明 | 詳細 |
---|---|---|
w | 単語 (word) | アルファベット、数字、アンダースコアの連続した文字 ※詳細は「:help word」参照 |
W | 単語 (WORD) | word + 非空白文字(括弧や引用符など)で連続した文字 ※詳細は「:help WORD」参照 |
s | 文 (sentence) | '.', '!', '?' で終わり、その後に行末かスペースもしくはタブが続く文字列 ※詳細は「:help sentence」参照 |
p | 段落 (paragraph) | 空行で囲われた文節の塊り ※詳細は「:help paragraph」参照 |
t | HTML,XMLタグ (tag) |
ブロック
コマンド | 説明 |
---|---|
b または ( または ) | ( )ブロック(block) |
B または { または } | { }ブロック(Block) |
[ または ] | [ ]ブロック |
< または > | < >ブロック |
引用符
コマンド | 説明 |
---|---|
' | シングルクォーテーション |
" | ダブルクォーテーション |
` | バッククォート |
具体例
あとは上記内容を組み合わせればOKです。
タイトルにも挙げた"diw"は
"diw" = (delete inner word) =単語ごとに削除
と分かります。
「this is a pan.」(カーソルが先頭"t"に当たった状態)で"diw"を実行すると、
"iw"(inner word) で指定した適用範囲「this」を"d"(削除)するので
「 is a pen.」
という結果になります。