利用标签,快速跳转
vim提供了标签跳转的方式,我们可以在任意位置设置标签,然后通过标签访问该标签所在位置。使用m{a-z}
可以在任意位置设置标记,之后使用{a-z}
可以回到对应的标记位置。这个命令可以回到设置标签时光标所在的具体行和列。
虽然vim支持从a到z的26个位置标记,但在实际使用中,我们可能不需要这么多,因为即便全部使用,也很可能忘记前面标记的具体位置。这种方式在标记后无法直观地显示标记位置。
除了用户主动设置位置标记外,vim还会自动为我们设置标记,例如上次修改、上次跳转、上次高亮等。下面列举了一些常用的自动标记及其含义:
- ``:当前文件中上次跳转动作之前所处的位置
- `.:上次修改的地方
- `^:上次进入插入模式的位置
- `[:上次修改或者复制的起始位置
- `]:上次修改或者复制的结尾位置
- `<:上次高亮选区的起始位置
- `>:上次高亮选区的结尾位置
在匹配的括号间进行跳转
使用%
可以在一组括号中使用,跳转到下一个匹配的()、[]、{}。例如,配合operator
来删除括号中的内容。
跳转列表 浏览器中会记录浏览历史,并提供回到上一页和下一页的功能。vim也提供了类似的功能,它记录了每一次的跳转,我们可以通过相关命令来跳转到上一次跳转和下一次跳转的位置。
跳转似乎很容易理解,但vim中的跳转并不是简单的光标移动。我们可以理解为motion允许我们在一个文件中进行移动,而跳转则是不同文件间的移动,就像浏览器打开一个新页面。为了类比浏览器的操作,我们可以把每次跳转记录理解成历史访问文件的记录。
使用:jumps
可以查看跳转记录。这个列表标记了行号与列号,我们可以通过g;
和g,
来访问下一个和上一个记录。
每个窗口都会维护自己的跳转列表,并且跳转列表并不会随着vim的退出而消失。
改变列表
vim在会话期间会维护一张表,记录每个缓冲区的每一次修改,这就是所谓的改变列表。使用:changes
可以查看这个列表。
这个列表与跳转列表类似,都标记了行号与列号。我们可以通过g;
和g,
来访问下一个和上一个记录。
跳转到光标下的文件
在将当前项目所有路径加入到path中后,我们可以将光标移动到表示相对路径的代码上,执行gf
即可跳转到对应文件。
vim有一个suffixesadd
变量,它保存了当前缓冲区执行gf
操作时,可以使用的扩展。我们可以像设置path
一样,例如:set suffixesadd+=.java
来允许打开java文件。
使用gf
也是一个跳转,也会被记录到跳转列表中,后续我们可以使用之前介绍的<Ctrl + o>
和<Ctrl + i>
来回在两个文件中切换。
使用全局书签在文件间跳转
之前介绍过在文件中使用标记进行跳转,而这次说到使用大写字母设置全局书签。例如,在跳转到settings.lua
之前,使用mI
在init.lua
中设置一个全局书签,跳转后使用`I
快速跳转回来。
好了,以上就是本文的全部内容。下次将介绍寄存器相关内容。感谢大家的阅读。
转载请注明来自广州玛斯顿影音有限公司,本文标题:《vim 从嫌弃到依赖(14)——快速跳转 》