人生シーケンスブレイク

シーケンスブレイク(Sequence breaking、シークエンスブレイクとも)とは、テレビゲームにおいて開発が想定している攻略ルートを逸脱し、ショートカットする行為のことである。

Atom の vim-mode-plus で shift-Y でヤンクした時に、行ヤンクでなく現在のカーソル位置から行末までのヤンクにする

追記 2017-08-30

v0.99.0 から設定画面から設定可能になりました。

f:id:ShineSpark:20170830130809p:plain

以下元の投稿。

最近Atomを使い始めてVimとの齟齬を少しずつ解消している。 AtomでのVim再現にはatom-vim-mode-plusを使っているのだが、 Y が行ヤンクだったのをカーソル位置から行末までのヤンクに変える方法を調べたのでその記録。

github.com

そもそも VimY が行ヤンクであることに納得が行かない理由

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'

参考