Vim学习笔记一

上次清理pkg安装的软件时用到了两个Vim下的小命令:

1
2
3
4
# 删除某相同特定行首(如abc)的行:
:% g/^abc/d
# 在所有行的后面插入特定短语(如abc):
:% s/$/abc

今天处理代码的时候又遇到这样的情况:


需要把每行行首的两个空格去掉,然后用到如下:

1
2
3
4
5
6
7
# 变换思路,即将行首的两个空格替换为无
:% s/^\s\s//

:% s/^\s\+//

# 如果删除行末的空格
:% s/\s\+$//

然后又琢磨出如下:

1
2
3
4
# 删除第X行到第Y行:
:X,Yd
# 从当前行往下删N行:
:Ndd

在第X行到第Y行的行首添加注释:

1
2
3
4
1. 光标在第X行首,使用CTRL+v进入块选模式,并使用方向键选择到第Y行
2. 按I(大写i)然后插入\#符号
3. 按ESC,稍等即可自动添加完全
4. 如果要删除的话,同样步骤然后按x即可

由此可以总结一下Vim下使用正则表达匹配的一些规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
: 进入命令模式
% 针对整个文件进行处理
g 可以粗略理解为grep
s 即substitute,替换;(有时粗略理解为insert?)
^ 表示位置以从行首为准
$ 表示位置以从行末为准
d 可以粗略理解为delete
\s 表示空格
\+ 表示一个或多个
^\s 行首空格
\s$ 行末空格
\s\+$ 行末前的一个或多个空格
// 替换的to部分是空的

(to be continued)