怎么去年文件里面的^M 字符?手贱安装了 vim extension 在 VSCode 里面,然后...... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yazoox
V2EX    Visual Studio Code

怎么去年文件里面的^M 字符?手贱安装了 vim extension 在 VSCode 里面,然后......

  •  
  •   yazoox 2020-05-28 17:13:45 +08:00 507 次点击
    这是一个创建于 1997 天前的主题,其中的信息可能已经有所发展或是发生改变。

    windows OS, VSCode

    今天安装了 vim extension 试试。

    结果,改了一个文件,git diff 发现,好多^M 奇怪的字符,以前用 vscode 是没有的。应该是 vim 带来的。google/baidu 一下,果然,然后试试搜索到的各种方法,比如:

    :%s/^M//s :%s/^M$//s 

    注:这里的^M,我是通过 Ctrl+Shift+V+M 输入的,不是直接输入^M 两个字符。

    结果,提示我

    E488: Trailing characters 或者

    E486: pattern not found: ^M

    E486: pattern not found: ^M$

    我只能卸载了插件,把文件直接删除,再 git checkout 下来,用 vscode 直接改,还是有^M 这个字符。 只要这个文件被 vim 曾经改过了,这个^M 就甩不掉了。其它的文件,没有被 vim 修改过的,用 vscode 直接改,就不会有这个问题。

    现在怎么办?这个文件改不回去了......

    有什么方法么?

    18 条回复    2020-06-21 18:52:03 +08:00
    chzhx
        2
    chzhx  
       2020-05-28 17:37:02 +08:00
    :%s/^M//g
    yazoox
        3
    yazoox  
    OP
       2020-05-28 17:38:04 +08:00
    @chzhx 不好意思。是我上面打错了。我输入的是:%s/^M//g 提示找找不到 pattern.
    xiaooloong
        4
    xiaooloong  
       2020-05-28 17:41:11 +08:00
    :%s/\r//g 应该是 windows 上 \r\n 的换行符中的 \r
    DefoliationM
        5
    DefoliationM  
       2020-05-28 17:44:04 +08:00
    cat [文件] | sed 's/^M//g' > 输出文件
    worg
        6
    jworg  
       2020-05-28 17:50:59 +08:00 via iPhone
    我也不知道该怎么吐槽,windows os 。。。,4 楼是对的,具体搜 dos2unix 实现
    chzhx
        7
    chzhx  
       2020-05-28 17:53:32 +08:00
    按住 ctrl,然后依次按 v m
    yazoox
        8
    yazoox  
    OP
       2020-05-28 17:58:19 +08:00
    @DefoliationM 你这个^M 在命令行里面怎么输入的。是 shift+6 和 shift+m 么? vim 能够输入这个特殊字符,在命令行里好像输入不了。
    fmumu
        9
    fmumu  
       2020-05-28 18:15:26 +08:00 via Android
    dos2unix
    airfling
        10
    airfling  
       2020-05-28 18:22:05 +08:00
    :set -f unix
    csl1995
        11
    csl1995  
       2020-05-28 18:22:35 +08:00
    你看下 vscode 是不是设置的 dos 格式(CRLF),改成 unix 格式(LF)即可
    获赠用命令 dos2unix
    DefoliationM
        12
    DefoliationM  
       2020-05-28 18:45:53 +08:00
    @yazoox 不是,用 vim 写个脚本就行了,可以直接运行脚本
    wsy2220
        13
    wsy2220  
       2020-05-28 18:47:32 +08:00
    unix2dos / dos2unix
    12101111
        14
    12101111  
       2020-05-28 20:37:22 +08:00
    vscode 右下角有一个 LF/CRLF 的按钮,点一下就可以切换
    james122333
        15
    james122333  
       2020-05-28 22:38:29 +08:00
    vscode 扩充的锅 纯 vim 好的很
    CRLF 讨厌的地方就在这
    pcmid
        16
    pcmid  
       2020-05-28 22:54:13 +08:00 via iPhone
    这里的^M 不是两个字符,linux 下是 ctrl+v 再 ctrl+m 打出来的
    zydrsnuo
        17
    zydrsnuo  
       2020-05-29 09:00:35 +08:00 via Android
    ^M 是 windiws 换行符,可以用 vim 改成 unix 换行格式。
    :set ff=unix
    sextant
        18
    sextant  
       2020-06-21 18:52:03 +08:00
    :%s/\r//g
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2605 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 07:30 PVG 15:30 LAX 23:30 JFK 02:30
    Do hve 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