在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 条评论
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
`
成对出现的连续大括号注释,是怎么回事?vim设置折叠
https://newsn.net/say/vim-fold.html
Folding | Vim Tips Wiki
https://vim.fandom.com/wiki/Folding
Vim documentation: fold
http://vimdoc.sourceforge.net/htmldoc/fold.html
http://vimdoc.sourceforge.net/htmldoc/options.html#'foldmarker‘
Confusion about vim folding – how to disable?
https://stackoverflow.com/questions/5017009/confusion-about-vim-folding-how-to-disable
using javascript folds in vim
https://verens.com/2005/04/18/using-javascript-folds-in-vim/
All folds open when opening a file | Vim Tips Wiki
https://vim.fandom.com/wiki/All_folds_open_when_opening_a_file
How to enable and use code folding in Vim?
https://unix.stackexchange.com/questions/141097/how-to-enable-and-use-code-folding-in-vim