首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yazoox
V2EX  ›  Visual Studio Code

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

  •  
  •   yazoox · 47 天前 · 1744 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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   47 天前
    :%s/^M//g
    yazoox
        3
    yazoox   47 天前
    @chzhx 不好意思。是我上面打错了。我输入的是:%s/^M//g 提示找找不到 pattern.
    xiaooloong
        4
    xiaooloong   47 天前
    :%s/\r//g 应该是 windows 上 \r\n 的换行符中的 \r
    DefoliationM
        5
    DefoliationM   47 天前
    cat [文件] | sed 's/^M//g' > 输出文件
    jworg
        6
    jworg   47 天前 via iPhone
    我也不知道该怎么吐槽,windows os 。。。,4 楼是对的,具体搜 dos2unix 实现
    chzhx
        7
    chzhx   47 天前
    按住 ctrl,然后依次按 v m
    yazoox
        8
    yazoox   47 天前
    @DefoliationM 你这个^M 在命令行里面怎么输入的。是 shift+6 和 shift+m 么? vim 能够输入这个特殊字符,在命令行里好像输入不了。
    fmumu
        9
    fmumu   47 天前 via Android
    dos2unix
    airfling
        10
    airfling   47 天前
    :set -f unix
    csl1995
        11
    csl1995   47 天前
    你看下 vscode 是不是设置的 dos 格式(CRLF),改成 unix 格式(LF)即可
    获赠用命令 dos2unix
    DefoliationM
        12
    DefoliationM   47 天前
    @yazoox 不是,用 vim 写个脚本就行了,可以直接运行脚本
    wsy2220
        13
    wsy2220   47 天前
    unix2dos / dos2unix
    12101111
        14
    12101111   47 天前
    vscode 右下角有一个 LF/CRLF 的按钮,点一下就可以切换
    james122333
        15
    james122333   47 天前
    vscode 扩充的锅 纯 vim 好的很
    CRLF 讨厌的地方就在这
    pcmid
        16
    pcmid   47 天前 via iPhone
    这里的^M 不是两个字符,linux 下是 ctrl+v 再 ctrl+m 打出来的
    zydrsnuo
        17
    zydrsnuo   47 天前 via Android
    ^M 是 windiws 换行符,可以用 vim 改成 unix 换行格式。
    :set ff=unix
    sextant
        18
    sextant   23 天前
    :%s/\r//g
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4529 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:13 · PVG 10:13 · LAX 19:13 · JFK 22:13
    ♥ Do have faith in what you're doing.