Last active
November 14, 2017 01:45
-
-
Save CyberGitter/75c8f7923a73f2555992 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
进行文档整理时,Vim确实能带来不少方便 | |
查找替换 | |
:s/old/new/g | |
:%s/old/new/gc | |
g表示global,c表示confirm | |
批量删除 | |
在规则文本后插入 | |
在每行后插入空行 | |
:g/$/norm o | |
:[range]g/$/norm o | |
Vim中匹配行尾到底用`$`还是用`\n`?它们到底有什么区别? | |
列出一些我想了解的要点吧: | |
Unix/Windows/Mac换行的区别 | |
<CR><NL> | |
CTRL-V CTRL-M | |
Windows+gVim中,用`:%s/\r//g`删除`^M`。详见[这里](http://stackoverflow.com/questions/5843495/what-does-m-character-mean-in-vim) | |
Vim中`\n`和`\r`的区别 | |
^M 其实就是 \r ,也就是说这个文件所使用的回车是 mac 中的。也就是 apple公司生产的操作系统内默认的换行符。 | |
在 windows中默认是 \r\n | |
在 unix/linux 中默认是 \n | |
只需要在vi/vim 中输入命令:%s/\r//g或者:%s/[ctrl-v][ctrl-m]//g ====== :%s/^M//g | |
效果是一样的,注意这里的 ctrl-v 和 ctrl-m 是你的按键,不是直接打字母上去,所以显示出来的是:%s/^M//g | |
正则表达式中的行首行尾匹配: | |
在“第*条”后只采用一个全角空格 | |
:%s/ +/ /g | |
注意,要用`+`,而非`*`,不然会在每个字符后面都添加一个全角空格。并且,最佳实践最好也是都用`+`,这样保证只对确实存在空格的地方进行操作。 | |
更新:此法不通,提示找不到模式` +` | |
如何连接连续的多行? | |
:[range]s/\n/ | |
如何在“第某条”后插入空格? | |
%s/\(第.\{1,3}条\)/\1 /g | |
在reST中,将“第某条”加粗: | |
%s/\(第.\{1,3}条\)/**\1**/g | |
同理也可构造在前面插入空格的命令 | |
例如,在“(一)”之前插入“- ”: | |
%s/\(^(\)/- \1/g | |
非空行前插入空格: | |
%s/\(^.\+$\)/ \1/g | |
把1、改成1. | |
%s/\(\d\{1,2}、\)/\1. /g | |
另外注意,正则表达式中,“(”是直接匹配的,不必用“\(”转义。在Vim中亦是如此。 | |
注意在Vim中,grouping的括号,以及指明匹配次数的{},都需要用\转义:\(\)、\{} | |
以上,请注意区分作为实体符号的小括号与作为grouping定界符的小括号,以免疑惑于为何有时需要转义,有时又不需要。 | |
隔行删除: | |
[range]norm jdd | |
将多个连续两次或以上的空行合并为一个空行: | |
删除所有空行: | |
:g/^$/d | |
将顶格的“第某章”转换为mediawiki语法: | |
%s/\(^第.\{1,3}章.\+$\)/== \1 ==/g | |
对数字开头的行,在行尾添加一个“:”: | |
%s/\(^\d.\+$\)/\1:/gc | |
每行的行首都添加自定义的文本或字符串: | |
%s/^/要插入的字符串 | |
每行的行尾都自定义的文本或字符串 | |
%s/$/要插入的字符串 | |
全句前后加包裹 | |
%s/\(^.\+$\)/* [[\1]]/gc | |
删除 | |
%s/^要删除的字符串//g | |
把句首中文括号及其中的文号移至句尾 | |
%s/^\((.\+)\)\(.\+\)$/\2\1/gc | |
注意:替换为的字符串中,不要加上^与$ | |
将文本字符串以超级链接标签包裹起来 | |
%s/\(^.\+$\)/<li><a href="">\1<\/a><\/li>/gc | |
如何删除多余的空格:其实有一个很好的hack,在记事本中,先把连续的2个空格替换为1个,然后再继续操作。 | |
一般的方法是: | |
`%s/\s//gc` | |
其中,正则表达式提供了元字符`s`,用以匹配任意的空白符。 | |
`%s/ //gc` | |
Vim中,空格可以直接匹配。 | |
Vim中,如何匹配连续的多个模式 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment