技术解析

vim 编辑文件时,中文字符自动折行会添加额外的换行符,如何解决?
0
2021-06-18 22:56:23
idczone

问题描述:

  1. 如图 1 所示,使用 vim 编辑一个文件。
  2. 如图 2 所示,把窗口调小,令其发生折行,此时被折行的行末要么会有一个">",要么会有一个"换行符"。
  3. 如图 3 所示,使用鼠标选中图 2 的内容,复制粘贴到 txt 中,会有异常的">"和"换行"。
  4. 请问如何让 vim 不显示">"和"换行符"?想解决的是显示问题,而不是复制粘贴问题。

l9qR6P.png  l9q40S.png  l9LruV.png 


set showbreak

这个命令是在折行后的行首增加额外的提示符,并不能去除">"和"换行符"。

搭车问下,换行后行尾有个 ” \ “,是什么原因,怎么破

">" 可以去掉,但是换行是去不掉的。 如果只是想复制出来的不换行,不包含其他符号。给你两个方案。
1. 复制出来之后批量查找替换一下。
2. 设置一下,让 vim 和系统共用粘贴板,然后在 vim 里面使用 yy 复制。

刚刚审错题了, 不想自动换行 :set nowrap 就行了

感谢回复。见第一条附言,不是想取消自动换行,因此"set nowrap"不适用。另外"set showbreak=+++"在我的环境上(macOS_10.15)是在行首添加额外字符,无法去除行尾的">",不知是什么原因?

那我有点不明白你的问题了,是想就像你截图这样显示两行,但是没有>和换行符? 如果不是为了复制的话,感觉这样没有什么意义。 不如你说一下原始需求,大家才好想办法。

原始需求如附言所提,未折行时(第一张图)能正常高亮,折行后(第二张图)无法高亮,因为"折行测试"四个字中间多了一个"换行符"导致的。

建议想办法让正则表达式忽略换行符?不然估计没什么好办法了。

感谢回复。iTerm2 文档看了一圈,未找到开启多行匹配的方法....根因在于 vim 对宽字符折行时加了换行符,常规字符没有这个问题。

我估计没办法,正则的多行匹配是 . 可以匹配多行,不是你这种中间有换行符然后忽略。

正则是可以匹配多行,但是 iTerm2 的实现是遇到换行符就触发匹配,因此无法匹配多行。

手动置顶

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服