VIM小技巧_1


在Vim中替换^M字符

在Linux下使用Vim来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些”^M”(需要在Vim中执行命令”:set list“进行查看不可见字符)有几种方法可以处理。

1.使用dos2unix命令。一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便:
$ dos2unix myfile.txt
上面的命令会去掉行尾的^M。
2.使用Vim的替换功能。启动vim,进入命令模式,输入以下命令:
:%s/^M$//g # 去掉行尾的^M。
:%s/^M//g # 去掉所有的^M。
:%s/^M/[ctrl-v]+[enter]/g # 将^M替换成回车。
:%s/^M/r/g # 将^M替换成回车。
3.使用sed命令。和vim的用法相似:
$ sed -e ‘s/^M/n/g’ myfile.txt
注意:这里的“^M”要使用“CTRL-V CTRL-M”生成,而不是直接键入“^M”

,

《“VIM小技巧_1”》 有 2 条评论

  1. VIM学习笔记 替换(Substitute)
    https://paper.tuisec.win/detail/893d01fbe8e2e3c
    https://yyq123.blogspot.jp/2011/10/vim-substitute.html
    `
    格式如下:
    :[range] s/search/replace/[flags] [count]

    如果没有在命令中指定范围,那么将只会在当前行进行替换操作。以下命令将把当前行中的I替换为We。命令中的/i标记,用于指定区分大小写。
    :s/I/We/gi

    以下命令将文中所有的字符串idiots替换成managers:
    :1,$s/idiots/manages/g

    通常我们会在命令中使用%指代整个文件做为替换范围:
    :%s/search/replace/g

    以下命令指定只在第5至第15行间进行替换:
    :5,15s/dog/cat/g

    以下命令指定只在当前行在内的以下4行内进行替换:
    :s/helo/hello/g4

    以下命令指定只在当前行至文件结尾间进行替换:
    :.,$s/dog/cat/g

    以下命令指定只在后续9行内进行替换:
    :.,.+8s/dog/cat/g

    你还可以将特定字符做为替换范围。比如,将SQL语句从FROM至分号部分中的所有等号(=)替换为不等号():
    :/FROM/,/;/s/=//g
    `

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注