vim-技巧

反转行序

globalmove命令结合使用,将所有行移到第一行的前面,实现了反转行序的排列

1
:global/^/m 0

^匹配一行的开头,所有即使是空行也能匹配到。move将匹配到的行总是移动到第0行之后(即为第一行),一行一行的往下执行,即实现了反转的效果

统计字数

1.先按g,再按ctrl+g

2.使用命令读取

1
:r !wc %

%表示编辑的文件本身

使用帮助手册

在关键字上按下shift+k

消除多余空格

消除行尾的空格

1
:%s+\s\+$++

\s表示空白字符,+表示重复1到正无穷次,$表示行尾。整个表示行尾的空白字符。然后使用了替换,将这些空白替换为无。

消除空行

使用了globaldelete命令

1
:g/^$/d

^$匹配一行的开头和结尾,一行只有开头和结尾,中间没有其他的字符,那么匹配到的就是空行了,然后用delete将其删除

vim搭配grep打开包括某些字符的文件

由于grep的参数-l返回的是包含查找字符的文件名。所以可以和vim搭配起来使用

1
vim `grep -l -w -i "print" ./*.py`

-w匹配整个词

-i忽略大小写

-l返回查找到的文件名

./*.py查找当前目录下的所有py文件

回到上次编辑的位置

ctrl+o+o

文本对齐的格式化

1.范围内居中,并不是全文的左右居中,只在一个指定宽度

1
:{range}center [width]		#width指定在某个范围内居中

2.右对齐,同样是在某个宽度

1
:{range}right width

3.左对齐,表示左边留白的宽度。不指定为0,不留空白

1
:{range}left [margin]
1
2
3
4
5
eg:
1,3center 100 #1,2,3行居中,宽度为100
1,$right 80 #全文居右,宽度80
.,$left 4 #当前行到末尾居左,留四个字符宽度
.,+4left #当前行以及接下来的4行居左,不留空白

4.没有左右对齐,可以借助shell命令实现

1
:%!fmt

取消折行

将一行的内容只显示在一行中,不折行显示

1
:set nowrap
1
2
3
4
5
6
7
8
9
10
11
12
13
zh 	向右滚动
4zh 向右滚动4个字符
zH 向右滚动半个窗口的宽度
ze 向右移动使当前光标成为最右端的可见字符
zl 向左滚动
4zl 向左滚动4个字符
zL 向左滚动半个窗口
zs 向左移动使当前光标成为最左边的可见字符

g0 到窗口内的第一个字符
g^ 到当前窗口内第一个非空白字符
gm 到当前窗口中间的字符上
g$ 到当前窗口的最后一个字符上

设置折行

1
:set wrap

设置折行之后保证最后的单词显示完整,不被截断显示

1
:set linebreak

page:258