vim 编辑文件时,中文字符自动折行会添加额外的换行符,如何解决?

2019-12-24 11:24:48 +08:00
 random572705

问题描述:

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

     

4657 次点击
所在节点    Linux
13 条回复
keelii
2019-12-24 11:29:02 +08:00
set showbreak
random572705
2019-12-24 11:37:12 +08:00
@keelii 这个命令是在折行后的行首增加额外的提示符,并不能去除">"和"换行符"。
runinhard
2019-12-24 11:57:31 +08:00
搭车问下,换行后行尾有个 ” \ “,是什么原因,怎么破
1iuh
2019-12-24 12:03:34 +08:00
@random572705 #2 ">" 可以去掉,但是换行是去不掉的。 如果只是想复制出来的不换行,不包含其他符号。给你两个方案。

1. 复制出来之后批量查找替换一下。

2. 设置一下,让 vim 和系统共用粘贴板,然后在 vim 里面使用 yy 复制。
1iuh
2019-12-24 12:34:13 +08:00
@random572705 #2 刚刚审错题了, 不想自动换行 :set nowrap 就行了
random572705
2019-12-24 14:31:48 +08:00
@1iuh 感谢回复。见第一条附言,不是想取消自动换行,因此"set nowrap"不适用。另外"set showbreak=+++"在我的环境上(macOS_10.15)是在行首添加额外字符,无法去除行尾的">",不知是什么原因?
1iuh
2019-12-24 16:08:17 +08:00
@random572705 那我有点不明白你的问题了,是想就像你截图这样显示两行,但是没有>和换行符? 如果不是为了复制的话,感觉这样没有什么意义。 不如你说一下原始需求,大家才好想办法。
random572705
2019-12-24 17:21:45 +08:00
@1iuh 原始需求如附言所提,未折行时(第一张图)能正常高亮,折行后(第二张图)无法高亮,因为"折行测试"四个字中间多了一个"换行符"导致的。
ysc3839
2019-12-24 17:49:41 +08:00
建议想办法让正则表达式忽略换行符?不然估计没什么好办法了。
random572705
2019-12-24 18:23:50 +08:00
@ysc3839 感谢回复。iTerm2 文档看了一圈,未找到开启多行匹配的方法....根因在于 vim 对宽字符折行时加了换行符,常规字符没有这个问题。
ysc3839
2019-12-24 23:12:43 +08:00
@random572705 我估计没办法,正则的多行匹配是 . 可以匹配多行,不是你这种中间有换行符然后忽略。
random572705
2019-12-25 10:03:57 +08:00
@ysc3839 正则是可以匹配多行,但是 iTerm2 的实现是遇到换行符就触发匹配,因此无法匹配多行。
random572705
2019-12-27 10:08:05 +08:00
手动置顶

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/631789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX