【问题标题】:Vim, yanking with xclip, getting rid of escape charactersVim,用 xclip 拉扯,摆脱转义字符
【发布时间】:2015-08-09 15:12:38
【问题描述】:

我正在使用 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 的问题,但我找不到答案。

提前致谢!

【问题讨论】:

    标签: vim ssh clipboard xclip


    【解决方案1】:

    只是偶然,我找到了我自己的问题here 的答案。复制到 xclip 的方法很简单:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 2011-07-11
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2017-08-14
      • 2016-10-15
      • 2013-02-13
      相关资源
      最近更新 更多