Hack #122: 行末までヤンクする
Posted at 2010/02/05ツイート
問題
カーソル位置から行末まで削除するにはDします。 カーソル位置から行末まで編集する(削除して挿入モードに入る)にはCします。
さて、カーソル位置から行末までヤンクするにはどうすればいいでしょうか。 答えはYではなく、y$です。
VimのYの挙動は、「カーソル行をヤンク」です。カーソル位置より左もまとめてヤンクされてしまいます。 オリジナルのviとの互換性のためか、このような仕様になっているみたいです。 オリジナルのviがなぜこのような仕様になっているかは不明です。
解決
~/.vimrc
に以下を記述します。
nnoremap Y y$
これで、Yの挙動がDやCと同様に、「カーソル位置から行末までヤンクする」になります。
一貫性がとれる上に、$
というとても人間には入力不可能な記号の入力を省略することができ、開発効率の大幅な向上が期待されます。
解説
なお、ヘルプ :h Y
を引くと以下のように説明されています。
["x]Y
yank[count]
lines[into register x]
(synonym foryy, |linewise|
). If you like"Y"
to work from the cursor to the end of line (which is more logical, but not Vi-compatible) use":map Y y$"
.
しかし、このやりかたは2点留意事項があります。
- ヘルプに書いている方法ですと、yや$の挙動が上書きされているときに、上書きされた側の挙動で今回定義したYが実行されます。多くの場合それは意図した挙動ではないため、本Hackでは
map
ではなくnoremap
としました - ビジュアルモードなどでは今回のYは関係ないため、
map
ではなくnmap
がより好ましいです
組み合わせて、本Hackではnnoremap
としました。
もどる
blog comments powered by Disqus