追記 2017-08-30
v0.99.0 から設定画面から設定可能になりました。
v0.99.0 以降は設定から "keymap `Y` to `yank-to-last-character-of-line`" をチェックで出来ます。
— Taku (@t9md) 2017年8月26日
因みに定義箇所は https://t.co/UWWL9jmSbw で、記事で言及されている方は起動高速化用のテーブルです。
以下元の投稿。
最近Atomを使い始めてVimとの齟齬を少しずつ解消している。
AtomでのVim再現にはatom-vim-mode-plusを使っているのだが、 Y
が行ヤンクだったのをカーソル位置から行末までのヤンクに変える方法を調べたのでその記録。
そもそも Vim で Y
が行ヤンクであることに納得が行かない理由
dやcのオペレーターコマンドは、2回連続叩いた場合にはカーソル位置に関わらず一行に作用する。
また、大文字で叩いた場合には、カーソル位置から行末まで作用する。
この挙動がyのみ異なる
コマンド | 挙動 |
---|---|
dd | 一行削除 |
D | カーソル位置から行末まで削除 |
cc | 一行削除してインサートモードへ |
C | カーソル位置から行末まで削除してインサートモードへ |
yy | 一行ヤンク |
Y | 一行ヤンク ← |
そこで、 .vimrc に
" yank to end of a line. nnoremap Y y$
と書いて Y
をカーソル位置から行末までのヤンクに書き換える手法があり、私もこの設定で長らく使用していた。
一定の法則に則った挙動の為、この挙動に慣れると Y
で今度は一行ヤンクされることに違和感がでてきてしまったので、Atomでもこの挙動にしたくなった。
Atom でもその挙動を実現する。
実はコマンドは https://github.com/t9md/atom-vim-mode-plus/blob/eeb88cfc9b0aedb2c7d07363fd2023c75c18bc18/lib/command-table.coffee#L72-L75 に実装されていた。
YankToLastCharacterOfLine: file: "./operator" commandName: "vim-mode-plus:yank-to-last-character-of-line" commandScope: "atom-text-editor"
その為、 keymap.cson に以下を追加するだけで利用可能になる。
'atom-text-editor.vim-mode-plus:not(.insert-mode)': 'shift-y': 'vim-mode-plus:yank-to-last-character-of-line'
参考
- https://github.com/t9md/atom-vim-mode-plus/blob/master/CHANGELOG.md
- https://github.com/t9md/atom-vim-mode-plus/issues/265
コミュニケーション・ロボット 週刊 鉄腕アトムを作ろう! 2017年 19号 9月12日号【雑誌】
- 発売日: 2017/08/29
- メディア: 雑誌