以下命令请在普通模式执行
1.移动光标
- j:向下
- 20j: 向下移动 20 行
- k:向上
- h:向左
- l:向右
- 0:到行首
- ^:到行首第一个字符,如果前面有空格的话
- $:到行尾
- gg:快速到文件头
- G:快速到文件尾
- 50G:跳转到第 50 行
请不要在插入模式进行光标移动,效率很低下。
2.复制
- yy:复制一行
- 8yy:向下复制8行
- yw:复制光标开始的一个单词
- y$:复制光标到行尾
- yfA:复制光标到第一个大写A中间的内容
- y2fA:复制光标到第二个大写A中间的内容
3.剪切
- x:向后剪切一个一个字符,如果是在行尾,则为向前剪切
- 4x:剪切4个
- xp:非行尾交换两个字符,如从bs变成sb
4.删除
- dd:删除一行
- 100dd:删除100行
- dw:删除一个单词
- df":删除到出现的第一个双引号
- d^:删除至行首
删除的内容会放到剪贴板,按p即可粘贴到其他地方。
5.粘贴
- p:粘贴复制或剪切的内容
- 5p:将复制或剪切的内容粘贴5次
6.撤销
- u{n}:撤销一次或n次操作
- U(大写):撤销当前行的所有修改
- Ctrl+r:redo,即撤销undo的操作
7. 查找和替换
:s(substitute)命令用来查找和替换字符串。语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。
7.1作用范围
作用范围分为当前行、全文、选区等等。
当前行,比如将当前行的foo替换为bar:
:s/foo/bar/g
全文,比如将全文的foo替换为bar:
:%s/foo/bar/g
选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。
:'<,'>s/foo/bar/g
比如将第2-11 行的foo替换为bar:
:5,12s/foo/bar/g
比如将当前行与接下来两行的foo替换为bar:
:.,+2s/foo/bar/g
7.2替换标志
上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换选择范围内目标的所有出现)。 还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%s/foo/bar
i表示大小写不敏感查找,I表示大小写敏感:
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:
:%s/foo/bar/gc
回车后Vim会将光标移动到每一次"foo"出现的位置,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。E与Y是光标移动快捷键
7.退出编辑器
- wq:保存当前文件并退出
- wqa:保存所有文件并退出
- q!: 不保存,强制退出
- qa!: 有多个文件被打开,同时退出
以下命令请在命令模式下执行
在普通模式下,输入:即可进入。
调整文本
- %s/$/sth/ :在行尾追加sth
- %s/^M//g :替换掉dos换行符,\^M使用ctrl+v + Enter即可输入
- :g/^\s$/d* :删除空行以及只有空格的行
- %s/#.*//g :删除#之后的字符
没错,这里使用的是正则。
- ce:使本行文本内容居中
- ri:使本行文本内容靠右
- le:使本行文本内容靠左
查找字符串
在普通模式下,按下/直接进入查找,输入相应的字符串按确定即可
- n:查找下一个匹配
- N:查找上一个匹配
- 2n:查找下面第二个匹配