技術ブログを開設する
ログイン
もっと気軽にアウトプットできる技術ブログプラットフォーム

この記事は何?

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履歴を扱えるようにするなどの、 いくつか便利な機能があるので、この際導入してもいいかもしれません。

関連記事

この記事へのコメント

まだコメントはありません
1
@rugamagaの技術ブログ
1
このエントリーをはてなブックマークに追加