vim 和普通的文本编辑器不一样,不能用鼠标拖动,需要用快捷键操作,控制光标所在位置。
1、行内移动
h
/l
:前/后移一个字符。b
/w
:前/后移到一个单词的开头处(以特殊字符包括空格为分界线)。B
/W
:前/后移连续大单词的开头处(以空格字符为分界线)。ge
/e
:前/后移到一个单词的结尾处(单词定义类似于b
/w
)。gE
/E
:前/后移到一个单词的结尾处(单词定义类似于B
/W
)。0
或|
/^
/$
:移动到一行的最开始/第一个非空白字符/结尾。- 上述几乎所有快捷键前面都可以添加数字,比如
4h
前移 4 个字母,2|
移动到该行起始第 2 个字母位置。但3^
的 3 无效,而3$
是后面第三行的行尾。
2、行间移动
可以通过Ctrl+O
/Ctrl+I
在历史位置里往前/往后快速跳转。如果文件已经关闭,将自动打开对应文件。:jumps
可以查看具体的历史记录。
k
/l
:上移/下移一行。3k
/3l
:上移/下移指定行数( 3 行)。:123
/123gg
/123G
:跳转到指定的行数(第 123 行)。gg
/G
:跳转到文档最开头/结尾。%
:跳转到匹配的括号(包括大小括号、中括号、花括号)。75%
:跳转到文档的 75%处。H
/M
/L
:光标快速跳转到屏幕 上部/中部/下部 位置,屏幕显示的内容不变。zt
/zz
/zb
:光标在文档里的位置不变,但在屏幕上的位置移动到 上部/中部/下部。PgUp
/PgDn
:屏幕显示内容上下翻页,光标会移动到屏幕的 上部 / 下部。Space
(空格):屏幕显示内容往下翻页,光标移动到屏幕的中部。
3、标记跳转
ma
:标记位置a
,小写字母。本文件内有效,多个文件可以有同样的标记名。mA
:标记位置A
,全局有效。全局有效,多个文件会互相覆盖,且可以在多个文件之间跳转。`a
/`A
:跳转到之前标记的位置a
。"a
:跳转到标记位置a
的行的第一个非空白字符上。一般不常用。
:marks
可以查看所有的标记位置,也包括下面的特殊标记。
3.1、特殊标记
vim 内置了一些自动标记,灵活应用可以在文档内快速跳转。
.
:上一次修改的地方。^
:上一次编辑模式退出(但不一定修改了)的地方。0
:最近编辑位置。该位置是上次 vim 退出前的最后编辑位置。1
到9
:历史位置(全局),数字大的表示更近的。"
(双引号):上次退出 Vim 时的本文件的光标位置。`
(反引号):上次跳转位置。重复按可以在上次位置和当前位置之间不断切换,类似于间隔按Ctrl+O
和Ctrl+I
。[
/]
:上一次编辑或复制的起始/结束位置。(但部分配置可能屏蔽了`[
和`]
)
还有一些特殊标记不光可用于跳转,还有其它特殊功能:
m<
和m>
标记一个区域起始结束位置,标记后gv
即可按照这两个位置快速选中区域,以便后续操作。 选中区域也会更新该特殊标记。
4、段落移动
{
/}
:快速移动到当前段落的开始和结束的空行位置(段落是指一段连续的非空行)。[[
/]]
:快速在单个函数/类之间跳动。只考虑最外层的级别,不会在类里的多个函数之间跳动。[{
/]}
:在匹配的大括号{
和}
之间跳转。多次按[{
,会不断往前跳到上一层的{
。]}
类似。[(
/])
:和上面类似,只是匹配(
和)
。
5、查找跳转
fx
/Fx
:向后/前查找指定的字母x
。然后,
和;
可以正向/反向重复查找。但注意该查找不跨行。tx
/Tx
:和上面的类似,只是光标会停留在搜索到的字符之前。/ss
:快速查找指定的字符串xx
,支持正则表达式。可以用n
/N
正向/反向重复查找和跳转。gd
:在当前函数块查找当前单词的定义处。不会考虑语意,所以可能和实际情况不符。gD
:在当前文件查找当前单词的定义处(第一次出现的地方)。
Q. E. D.