如何绑定一个键在可视模式下发出两个命令?

如何绑定一个键在可视模式下发出两个命令?

这个问题比我目前面临的问题更普遍,可能没有解决方案。但如果没有普遍的解决方案,我真正的问题可能有解决方案。

我想要做的是,如果我使用y可视模式,我希望 Vim 将其同时拉到寄存器+和常规"寄存器中。

我不在乎破坏系统剪贴板,因为我使用一些工具来记录过去的剪贴板条目。我只想要一种足够简单的方法来将内容拉到剪贴板,这样我就可以真正使用它。

可能的方法

  • 将键绑定到函数,希望该函数能够以某种方式获取选择范围,然后将其粘贴到两个寄存器中 - 我认为这可以做到,我的 vimrc 中有一个神奇的代码片段可以做到这一点。我不知道它是如何工作的。看起来像这样:vnoremap <silent> x :<C-u>execute 'normal! vlF' . nr2char(getchar()) . 'of' . nr2char(getchar())<CR>
  • 复制,然后调用明确将"寄存器复制到+寄存器的函数。不确定如何复制,然后调用某个函数。可能更容易
  • ???
  • 不太可能直接获利

答案1

set clipboard^=unnamedplus

:help 'clipboard'

我不在乎破坏系统剪贴板,因为我使用一些工具来记录过去的剪贴板条目。我只想要一种足够简单的方法来将内容拉到剪贴板,这样我就可以真正使用它。

破坏系统剪贴板恰恰是同步未命名寄存器和剪贴板寄存器的一个相当大的问题当您使用系统范围的剪贴板管理器时。很难找到您要查找的内容,它可能被埋在数十个毫无意义的条目之下。想想吧。

另一个选择是y在可视模式下重新映射以将其拉到系统剪贴板:

 xnoremap y "+y

自从全部无论如何,复制都会被发送到未命名的寄存器,上面的命令将有效地将可视化选择复制到未命名的寄存器剪贴板寄存器。在我看来,这是比使用更干净的解决方案'clipboard'

相关内容