neovimの矩形ビジュアルモードからyankした時、上手くpasteできないなら?

公開日:2018-11-04
最終更新:2018-11-04

この記事は何?

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

記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
@rugamagaの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする