自己有些写过关于正则表达式的文章:
https://blog.csdn.net/theArcticOcean/article/details/78634095

现在写一写正则表达式在vim中的应用情景。

文本替换

我们知道全文本的替换是:%s/old_text/new_text/g
那么特定行的是,比如3-7行:3,7s/old_text/new_text/g
当前行到文末的替换:.,$s/old_text/new_text/g

文本删除

删除多余的空行
情景:从windows中复制过来的文字,想要用vim删除空行。
命令:%s/\n\n/^M/g

删除 [ ] 内容.
命令:%s/\[[0-9.]*\]//g

vim多行变一行

以逗号为分隔符
命令:%s/\n/,/g

每行增添内容

情景:markdown文档书写,每一行行首增加 <li>
命令:%s/^/<li>/g

清除每行最后的数字

%s/[0-9]$//g

正则表达增加换行

原本想在23前增加换行符,所以用了:%s/23/\n23/g
结果在23前加上了^@特殊字符,在vim下输入help digraph-table查看特殊的输入字符:

char digraph hex dec official name
^@ NU 0x00 0 NULL (NUL)
^A SH 0x01 1 START OF HEADING (SOH)
^B SX 0x02 2 START OF TEXT (STX)
^C EX 0x03 3 END OF TEXT (ETX)
^D ET 0x04 4 END OF TRANSMISSION (EOT)
^E EQ 0x05 5 ENQUIRY (ENQ)
^F AK 0x06 6 ACKNOWLEDGE (ACK)
^G BL 0x07 7 BELL (BEL)
^H BS 0x08 8 BACKSPACE (BS)
^I HT 0x09 9 CHARACTER TABULATION (HT)
^@ LF 0x0a 10 LINE FEED (LF)
^K VT 0x0b 11 LINE TABULATION (VT)
^L FF 0x0c 12 FORM FEED (FF)
^M CR 0x0d 13 CARRIAGE RETURN (CR)
^N SO 0x0e 14 SHIFT OUT (SO)
^O SI 0x0f 15 SHIFT IN (SI)
^P DL 0x10 16 DATALINK ESCAPE (DLE)

发现回车是:^M CR 0x0d 13 CARRIAGE RETURN (CR)
所以接着输入:
%s/^@ 名称:/^M名称:/g
注意:使用ctrl +v 输入^, ctrl + M 输入M

Categories: Editor

Leave a Reply

Your email address will not be published. Required fields are marked *