复制文本而不包括实际不存在的格式字符

时间:2018-02-13 20:28:29

标签: vim

我在vim中为标签,尾随空格和换行配置了一些格式:

enter image description here

我有set mouse=v,我通过在终端上选择文本并将其粘贴到另一个应用程序来复制文本。如何配置vim,以便复制文本中不包含这些格式化字符?

2 个答案:

答案 0 :(得分:0)

当你不让Vim处理鼠标时,它将是处理文本选择的终端。对于终端,任何应用程序只是驱动光标并在此处打印字符。它没有任何终端内容的语义背景;它只是字符的行和列。

所以,你不能指望终端能够检测到Vim内的换行。终端也不能区分实际文本字符和周围的视觉信息(这同样适用于状态行,数字和折叠列等)。

因此,如果要访问实际文本,请通过Vim进行复制;它分别具有X选择和系统剪贴板的寄存器*+。为了使这些工作,需要满足某些先决条件。互联网上有很多相关的问题(取决于您的操作系统,终端,以及您安装的Vim的版本和版本)。

如果你真的无法让它工作,你可以:write(部分)缓冲区到临时文件,然后从那里复制。如果您连接到其他主机,请使用Samba,scpftp来传输文件。作为最后的手段,暂时禁用Vim中的视觉装饰,从终端复制,并在粘贴后撤消目标应用程序中的硬包裹。

答案 1 :(得分:0)

我创建了一个Vim插件,使用映射切换亚麻,列表等等:https://github.com/timakro/vim-copytoggle

Ingo Karkat使用Vim的剪贴板功能的答案是另一种选择。我决定反对它,因为debian打包Vim没有这个功能(vim-gtk包包含它),我不想在任何地方设置X11转发,我不想在无头服务器上安装X11库。只需用鼠标选择文本对我来说更方便。通过设置set mouse=aset clipboard=autoselect,autoselectplus,使用剪贴板功能也可以,但请参阅:help 'clipboard'