🗂

osyo-manga/vim-operator-stay-cursor に PR した

2024/10/23に公開

通常、Visual mode で選択して y を押すと、選択の始めの位置にカーソルが戻ります。
この際に、カーソルを戻さないようにする便利プラグインが osyo-manga/vim-operator-stay-cursor です。
本来の機能ではありませんが、 vim-operator-stay-cursor を使っているとドットリピートで yank も繰り返せることに気付きました。
ただ、カーソルが元の yank の位置に移動してしまうのが難点です。

これを解消する PR を作成してみました。
しかし、これだと Normal mode での yank ならカーソル移動はありませんが、Visual mode で選択した場合の yank では、やはりカーソルが移動してしまいます。

当初、この記事で何かいい方法ないか聞こうかなと思っていたのですが、解決方法を見つけられたので、もう一つ PR してみました。
vim-operator-stay-cursor ではカーソル位置を動かさないようにする(現在の位置に戻す)ために winrestview() を使っているので、これの引数に渡す変数を処理の最後に初期化してやると期待した動作になりました。

こんな感じにキーマップを設定して、積極的に vim-operator-stay-cursor を使うようにしてみました。

map <expr> y operator#stay_cursor#wrapper("y")
nmap Y y$
nmap <Space>y "+y
xmap <Space>y "+y
nmap <Space>Y "+y$

ちなみに、このプラグインを使っていなくても coptionsy フラグが含まれるときは yank も繰り返せるようです。 :h .

GitHubで編集を提案

Discussion