1

我正在使用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 的几种变体,但它们似乎都将转义字符留在原处。我不知道 vimscripting 足以自己修复它。

我知道已经有几个关于 vim 和 xclip 的问题,但我都找不到答案。

提前致谢!

4

1 回答 1

1

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

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

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

:vmap <silent> <F7> y :silent call system("xclip -i", getreg("\""))<CR>
于 2015-08-13T09:33:07.000 回答