vim-users.jp

Hack #81: Insert mode中で単語単位/行単位の削除をアンドゥ可能にする

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

問題

Hack #76: Insert mode中で単語単位/行単位の削除を行なう ではInsert mode中でのちょっとした誤入力を簡単に訂正できる方法を紹介しました。

しかし調子に乗って<C-u><C-w>を連打していると不便なことがあります。 例えばInsert modeを開始してから以下のようなテキストを入力したとしましょう(「|」はカーソル位置です):

I am the Lord your God, who brought you out of Egypt,|

ここで<C-u>を押下すると以下の状態まで削除されます:

|

続いて以下のようなテキストを入力したとしましょう:

Eye for eye, tooth for tooth, hand for hand, foot for foot.|

ここで<C-u>での削除前のテキストに戻そうと思っても戻すことができません。 Insert mode中での変更はInsert modeから抜けるまでがアンドゥ可能な1単位として扱われるためです。 とはいえこのようなケースでもアンドゥしたいことはしばしばあります。 どうすればよいでしょうか。

解決方法

以下の内容をvimrcに追加します:

inoremap <C-u>  <C-g>u<C-u>
inoremap <C-w>  <C-g>u<C-w>

上記の設定は<C-u><C-w>での削除をアンドゥ可能にします。 右辺({rhs})に含まれる<C-g>uはInsert modeでの変更に区切りを付けるコマンドです。 これにより<C-g>u実行後の操作から<C-g>u実行前の状態にアンドゥできるようになります。

参考資料

kana

もどる
blog comments powered by Disqus