この記事は何?
neovimの現在バージョン(v0.3.1)では、
set clipboard=unnamed
のときに
矩形ビジュアルモードを使ったyank&pasteが失敗することがあります。
これに対するワークアラウンドを紹介します。
結論は何?
- miniyank を導入するとワークアラウンドになります
- miniyank は VimPlug などを使って以下のように導入しましょう。
Plug 'bfredl/nvim-miniyank'
map p <Plug>(miniyank-autoput)
map P <Plug>(miniyank-autoPut)
説明
vimとかneovimには、矩形ビジュアルモードというモードがあります。
通常のビジュアルモードには v
キーから、
矩形ビジュアルモードには ^v(Ctrl + v)
から入ることができます。
この矩形ビジュアルモードと普通のビジュアルモードでは、 縦方向にカーソルを動かした時の挙動が違います。
この図のように、矩形(ブロック)のように、領域選択することができるのが矩形ビジュアルモードです。
矩形ビジュアルモードにより縦方向の領域を作った状態で、yankしpasteを行います。 するとちょうど縦に貫くように、元のブロック領域が挿入されるような挙動になります。
ところが
- 現在neovim v0.3.1 を使っていて、
-
clipboard=unnamed
とかclipboard=unnamedplus
を設定した上で、 - MacOSなど一部の環境の場合
矩形選択をyankしてpasteした時、このような挙動にならず、 代わりに挿入行自体がズレるという問題が起きています。
この問題の報告と対処は https://github.com/neovim/neovim/issues/1822 のGithubIssue上で進んでいるようですが、現状ではまだパッチなども出ていません。
さてこの問題に対するワークアラウンドとして issue 1822で紹介されているのが、miniyankプラグイン( https://github.com/bfredl/nvim-miniyank )の導入です。
miniyankプラグインは本来yankにいくつかの便利な機能を付与するためのプラグインです。 しかしそのためにregisterに対する操作を行うとき、たまたま矩形のyankについての考慮が行われている結果、このバグを回避させることが出来ているということのようです。
miniyankはVimPlugなどを利用して導入しましょう。 以下のような設定を行えば導入完了で、狙い通りのyank&pasteを行うことができるでしょう。
Plug 'bfredl/nvim-miniyank'
map p <Plug>(miniyank-autoput)
map P <Plug>(miniyank-autoPut)
またminiyank自体にも、yank履歴を扱えるようにするなどの、 いくつか便利な機能があるので、この際導入してもいいかもしれません。
この記事へのコメント