- 调用shell 命令 :%!column -t -s ‘|’ 进行代码对齐,在调用该命令之前需要先在需要对齐的地方插入分隔符‘|’ ;
- 获取当前行数 :echo line(‘.’),在每一行的开头插入行号 :%s/^/=line(‘.’)/g
- 获取当前行的字符长度 :echo strlen(getline(‘.’))
- 数学计算=,例如获取当前行数,然后减去1:
:%s/^/=line(‘.’) -1 /g - 将tab转化为空格,并将其作为函数放进配置文件.vimrc,只需输入:W 即可。
"convert tab to space!
function W()
set expandtab
%retab!
w
endfunction
command! W call W()
function WQ()
set expandtab
%retab!
wq
endfunction
command! WQ call WQ()
- 去掉重复行,分两步骤:1):sort 2):g/(^.*$)\n\1/d
- 正则表达相关: \s{n} ---- 匹配n个空格,如:
:%s/\s{5}//g ----删掉5个空格; - 在当前目录中,在文本中批量替换字符,分两步:
:args ./*.v
:argdo %s/aaa/bbb/ge | update
-
大小写转换 ,选中需要转换的字符,然后 shift+‘~’
-
局部数据运算与打印,submatch 与 printf
例如,data[8-1:0] = dat_i[48-1:40] 替换为 data[56-1:48] = dat_i[96-1:48].
: s/[(\d+)-1/\=printf(“[%d-1”,submatch(1)+48)/g
: s/(\d+)]/\=printf(“%d]”,submatch(1)+48)/g
–>除法
: s#\s(\d+)\s*#=str2float(submatch(1))/2.0#g -
文本中每N行合并为一行;例如 a.txt中
a
b
c
d
e
f
变为
abc
def
可以用awk(这个不属于gvim命令)
awk ‘{if (NR%3 == 0) {print $0} else {printf(“%s”, $0)}}’ a.txt
如中间需要分隔符,如
a_b_c
d_e_f
则
awk ‘{if (NR%3 == 0) {print $0} else {printf(“%s_”, $0)}}’ a.txt -
高级一点的替换,如每隔N行就执行替换操作,也用awk。例如a.txt中
a
b
c
d
e
f
将每3行的字母替换成xxx,变成
a
b
xxx
d
e
xxx
须搭配awk的sub函数,命令如下:
awk ‘{if (NR%3 == 0) {sub(/\w+/,“xxx”);print $0} else {print $0 }}’ a.txt
注意,else分支的打印用的是print而不是printf。print输出默认自带换行符,而printf是需要指定分隔符的,当然,这里的例子也可以用printf,但需要指定换行符:
awk ‘{if (NR%3 == 0) {sub(/\w+/,“xxx”);print $0} else {printf(“%s\n”, $0)}}’ a.txt -
gvim中如果需要匹配到具体的个数,比如匹配连续的4个非空字符,可以这样:
/\S{4}
例如将连续的5个空格替换成xx:
: s/\s{5}/xx/g