Vim,使用 xclip 进行猛拉,摆脱转义字符

Vim, yanking with xclip, getting rid of escape characters

我正在使用 vim 通过 ssh 在多个系统上编辑文件,其中一些系统有或没有编译 -clipboard 选项。因此我一直在尝试使用 xclip 来复制文件的某些部分文本到 X 剪贴板,然后通过 ssh 迅速传回我的机器,我可以在那里使用它。

现在,我知道,我可以使用

:'<,'>w !xclip<CR><CR>

如果我想复制整行或多行到剪贴板,但我不想复制整行,我想要一个任意选择

为了修复它,我做了一个绑定,它将选择保存到@i 寄存器中并将其通过管道传输到 xclip

:vmap <F7> "iy<CR>:call system('echo ' . shellescape(@i) . ' \| xclip -i')<CR>

它似乎工作正常,可以在一行内选择一个文本,但似乎保留了转义字符,当我复制多行时,例如

Plugin 'vim-scripts/buftabs'
Plugin 'jlanzarotta/bufexplorer'
Plugin 'kien/ctrlp.vim'
Plugin 'terryma/vim-multiple-cursors'

我在我的 xclip 中得到以下内容 - 换行符的转义符仍然存在

Plugin 'vim-scripts/buftabs'\
Plugin 'jlanzarotta/bufexplorer'\
Plugin 'kien/ctrlp.vim'\
Plugin 'terryma/vim-multiple-cursors'\

我尝试使用 shellescape 和 escape 的几种变体,但它们似乎都保留了转义字符。我对编写脚本的了解不足 vim,无法自行修复。

我知道已经有几个关于 vim 和 xclip 的问题,但我能在其中的 none 中找到答案。

提前致谢!

偶然间,我找到了自己问题的答案here。复制到 xclip 可以像这样简单地完成:

:vmap <F7> y: call system("xclip -i", getreg("\""))<CR>

这是一个修复程序,可以阻止系统调用在状态栏中显示

:vmap <silent> <F7> y :silent call system("xclip -i", getreg("\""))<CR>