Home > Vim Hacks > Hack #122: 行末までヤンクする

Hack #122: 行末までヤンクする

問題

カーソル位置から行末まで削除するにはDします。 カーソル位置から行末まで編集する(削除して挿入モードに入る)にはCします。

さて、カーソル位置から行末までヤンクするにはどうすればいいでしょうか。 答えはYではなく、y$です。

VimのYの挙動は、「カーソル行をヤンク」です。カーソル位置より左もまとめてヤンクされてしまいます。 オリジナルのviとの互換性のためか、このような仕様になっているみたいです。 オリジナルのviがなぜこのような仕様になっているかは不明です。

解決

~/.vimrcに以下を記述します。

nnoremap Y y$

これで、Yの挙動がDCと同様に、「カーソル位置から行末までヤンクする」になります。 一貫性がとれる上に、$というとても人間には入力不可能な記号の入力を省略することができ、開発効率の大幅な向上が期待されます。

解説

なお、ヘルプ :h Y を引くと以下のように説明されています。

["x]Y yank [count] lines [into register x] (synonym for yy, |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としました。

ujihisa

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2010/02/hack122/trackback/
Listed below are links to weblogs that reference
Hack #122: 行末までヤンクする from Vim-users.jp

Home > Vim Hacks > Hack #122: 行末までヤンクする

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • プラグイン
  • vimrc
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top