vim 编辑文件时,中文字符自动折行会添加额外的换行符,如何解决? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
random572705
V2EX    Linux

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

  •  1
     
  •   random572705 2019 年 12 月 24 日 5241 次点击
    这是一个创建于 2314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题描述:

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

    l9qR6P.png  l9q40S.png  l9LruV.png 

    第 1 条附言    2019 年 12 月 24 日

    由此问题产生的上层问题:

     iTerm2终端使用"Trigger"功能实现正则匹配高亮特定字符串时,由于Trigger的匹配规则是遇到换行则匹配,因此vim这里的断行会导致正则匹配失败,如下图所示,正则表达式为"折行测.?试"。  本问题主要是想简单地解决这个问题,而不想拆分成多段正则。

    lC3nOA.png
    13 条回复    2019-12-27 10:08:05 +08:00
    keelii
        1
    keelii  
       2019 年 12 月 24 日
    set showbreak
    random572705
        2
    random572705  
    OP
       2019 年 12 月 24 日
    @keelii 这个命令是在折行后的行首增加额外的提示符,并不能去除">"和"换行符"。
    runinhard
        3
    runinhard  
       2019 年 12 月 24 日
    搭车问下,换行后行尾有个 ” \ “,是什么原因,怎么破
    1iuh
        4
    1iuh  
       2019 年 12 月 24 日
    @random572705 #2 ">" 可以去掉,但是换行是去不掉的。 如果只是想复制出来的不换行,不包含其他符号。给你两个方案。

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

    2. 设置一下,让 vim 和系统共用粘贴板,然后在 vim 里面使用 yy 复制。
    1iuh
        5
    1iuh  
       2019 年 12 月 24 日
    @random572705 #2 刚刚审错题了, 不想自动换行 :set nowrap 就行了
    random572705
        6
    random572705  
    OP
       2019 年 12 月 24 日
    @1iuh 感谢回复。见第一条附言,不是想取消自动换行,因此"set nowrap"不适用。另外"set showbreak=+++"在我的环境上(macOS_10.15)是在行首添加额外字符,无法去除行尾的">",不知是什么原因?
    1iuh
        7
    1iuh  
       2019 年 12 月 24 日 via iPhone
    @random572705 那我有点不明白你的问题了,是想就像你截图这样显示两行,但是没有>和换行符? 如果不是为了复制的话,感觉这样没有什么意义。 不如你说一下原始需求,大家才好想办法。
    random572705
        8
    random572705  
    OP
       2019 年 12 月 24 日
    @1iuh 原始需求如附言所提,未折行时(第一张图)能正常高亮,折行后(第二张图)无法高亮,因为"折行测试"四个字中间多了一个"换行符"导致的。
    ysc3839
        9
    ysc3839  
       2019 年 12 月 24 日
    建议想办法让正则表达式忽略换行符?不然估计没什么好办法了。
    random572705
        10
    random572705  
    OP
       2019 年 12 月 24 日
    @ysc3839 感谢回复。iTerm2 文档看了一圈,未找到开启多行匹配的方法....根因在于 vim 对宽字符折行时加了换行符,常规字符没有这个问题。
    ysc3839
        11
    ysc3839  
       2019 年 12 月 24 日 via Android   1
    @random572705 我估计没办法,正则的多行匹配是 . 可以匹配多行,不是你这种中间有换行符然后忽略。
    random572705
        12
    random572705  
    OP
       2019 年 12 月 25 日
    @ysc3839 正则是可以匹配多行,但是 iTerm2 的实现是遇到换行符就触发匹配,因此无法匹配多行。
    random572705
        13
    random572705  
    OP
       2019 年 12 月 27 日
    手动置顶
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3093 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 06:11 PVG 14:11 LAX 23:11 JFK 02:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86