Vim Ultisnips、可视令牌和系统剪贴板

Vim Ultisnips、可视令牌和系统剪贴板,vim,ultisnips,Vim,Ultisnips,我对vim很陌生,但我发现它是一个强大的工具(尤其是UltiSnips和YouCompleteMe等插件)。我非常喜欢将个人代码片段与VisualToken结合起来创建以执行快速文本转换的想法。不过,我希望能够在web浏览器中选择一些文本,将其复制到剪贴板,然后在vim中简单地键入my_snippet,以将剪贴板中的文本作为可视标记展开my_snippet。这会很有用,但我不知道如何安排。如果有人能指导我如何设置vim来实现这一点,那就太好了。我将试着给大家举个例子,这是我有一段时间遇到的问题。

我对vim很陌生,但我发现它是一个强大的工具(尤其是UltiSnips和YouCompleteMe等插件)。我非常喜欢将个人代码片段与VisualToken结合起来创建以执行快速文本转换的想法。不过,我希望能够在web浏览器中选择一些文本,将其复制到剪贴板,然后在vim中简单地键入my_snippet,以将剪贴板中的文本作为可视标记展开my_snippet。这会很有用,但我不知道如何安排。如果有人能指导我如何设置vim来实现这一点,那就太好了。

我将试着给大家举个例子,这是我有一段时间遇到的问题。我一直在尝试新插件,所以复制github项目名称,如:

 psliwka/vim-smoothie 
并将其转化为:

Plug 'psliwka/vim-smoothie'
是有问题的,因为除了在行尾键入单词Plug外,我还必须键入单引号并删除三个空格和一个caridge return

     psliwka /
vim-smoothie 
所以我的代码片段必须一次完成。经过一番研究,我得出以下结论:

snippet plug "Insert a new plugin on my vimrc" w
Plug '${1:`!v substitute(@+, ' \|\n', '', 'g' )`}'
endsnippet
一些解释:
!v
代码片段的一部分表示“vim插值”,因此我可以使用一些vim命令。
substitute()
命令规则是:

where-substitue,  what-substitute, substitution, flags
    |               |                   |          |
    @+            ' \|\n'               ''         g
  clipboard      space or enter      nothing     globally

我不太明白为什么要在没有任何视觉选择的工作流中使用视觉标记。您可以在代码段中使用一个简单的标记,然后在使用该标记时按
+
从系统剪贴板粘贴,或者我猜您可以在代码段中使用python插值来自动执行。嗯,我想,通过直接从Python插入到Vim的Python接口,自动获取剪贴板的内容是最容易的。正确的方法是什么?谁能给出代码示例提前感谢您(我想我需要了解更多关于所有这些vim缓冲区的信息…)我发现
vim.eval(@+)
可以在我正常的本地机器上执行我想要的操作。但当我尝试在服务器上使用vim(通过ssh)时,它将一事无成(很明显,这个vim无法访问我的本地机器剪贴板…)。如果没有合适的解决方法,那么我可能会继续使用手动粘贴…事实上,既然您提到了它,只使用vimscript插值就更简单了。不过,我没有通过ssh使用本地剪贴板的解决方案。