我试图在vim中写一组映射来从vim寄存器中放入,但没有剪贴板支持(即用+剪贴板编译)。如果不是这样,那么有一个中途解决方案会很棒
到目前为止,我已经能够将文本移动到cat
,将其打印在屏幕底部以便于选择,但这只能按行工作,所以如果我想复制一行的一部分,我必须cat
整个事情。
nnoremap <leader>Y V:w !cat<cr>
vnoremap <leader>y :w !cat<cr>
我想知道是否有某种方式使用寄存器,并将寄存器内容粘贴到cat
?
答案 0 :(得分:1)
如果您安装了xclip,或者系统剪贴板的某个等效接口,则可以使用:
nnoremap <leader>Y V""Y:call system('xclip -i', @")<cr>
vnoremap <leader>y ""y:call system('xclip -i', @")<cr>
哪个会直接拉到系统剪贴板。然后您可以使用:
nnoremap <leader>p :let @" = system('xclip -o')<cr>""p
从剪贴板中放入。
如果您想坚持使用显示选择方法,可以使用:
nnoremap <leader>Y V""Y:echo @"<cr>
vnoremap <leader>Y V""Y:echo @"<cr>
vnoremap <leader>y ""y:echo @"<cr>
这将拉到标准的yank寄存器,然后将其内容放入屏幕底部的窗口,方式与您拥有的相同,但具有字符精度。还有:
:echo system('cat', @")
这基本上是:echo @"
的长篇形式。它只是意味着,调用系统命令'cat'
,然后管道它是"
寄存器的内容。请注意,它不会作为命令行参数传递,看起来像:echo system('cat ' . @")
。