vim-users.jp

Hack #76: Insert mode中で単語単位/行単位の削除を行なう

Posted at 2009/09/22
このエントリーをはてなブックマークに追加

問題

テキスト入力中に誤入力をしてしまうことはしばしばあります。 例えば

if (foo == bar|

とまで入力したところでbarはloungeの間違いだったことに気付いたとしましょう (「|」はカーソル位置です)。 これには

<Esc> b ciw lounge

のようにカーソル位置を調整して該当単語を修正することができます (読み易さのためにスペースを入れていますが実際にスペースは入力しません)。

しかしこの手順は面倒です。Insert mode中のまま簡単に削除を行なうことは できないでしょうか。

解決方法

これにはInsert mode中で<C-w>を入力します。 例えば最初に例示した状態で

if (foo == bar|

<C-w>を入力すると以下の状態になります。

if (foo == |

Insert mode中での<C-w>は カーソル位置より前にある単語を削除することができます。

関連項目

<C-u>というコマンドもあります。 これはカーソル行で入力された文字を全て削除します。 例えば以下のようにテキスト入力を行なったとしましょう (「^」はInsert modeの開始位置です)。

if (foo == lounge) retrun a|
                   ^

ここで<C-u>を入力すると以下の状態になります。

if (foo == lounge) |
                   ^

また、<C-w><C-u>を使う場合は ‘backspace’の値を以下のように調整しておくと より便利に使うことができるでしょう。

set backspace=indent,eol,start

参考資料

kana

もどる
blog comments powered by Disqus