VIM 的常用跳转操作

作者: , 共 1545 字 , 共阅读 0

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 退出前的最后编辑位置。
  • 19:历史位置(全局),数字大的表示更近的。
  • "(双引号):上次退出 Vim 时的本文件的光标位置。
  • `(反引号):上次跳转位置。重复按可以在上次位置和当前位置之间不断切换,类似于间隔按Ctrl+OCtrl+I
  • [/]:上一次编辑或复制的起始/结束位置。(但部分配置可能屏蔽了`[`]

还有一些特殊标记不光可用于跳转,还有其它特殊功能:

  • m<m>标记一个区域起始结束位置,标记后gv即可按照这两个位置快速选中区域,以便后续操作。 选中区域也会更新该特殊标记。

4、段落移动

  • {/}:快速移动到当前段落的开始和结束的空行位置(段落是指一段连续的非空行)。
  • [[/]]:快速在单个函数/类之间跳动。只考虑最外层的级别,不会在类里的多个函数之间跳动。
  • [{/]}:在匹配的大括号{}之间跳转。多次按[{,会不断往前跳到上一层的{]}类似。
  • [(/]):和上面类似,只是匹配()

5、查找跳转

  • fx/Fx:向后/前查找指定的字母x。然后,;可以正向/反向重复查找。但注意该查找不跨行。
  • tx/Tx:和上面的类似,只是光标会停留在搜索到的字符之前。
  • /ss:快速查找指定的字符串xx,支持正则表达式。可以用n/N正向/反向重复查找和跳转。
  • gd:在当前函数块查找当前单词的定义处。不会考虑语意,所以可能和实际情况不符。
  • gD:在当前文件查找当前单词的定义处(第一次出现的地方)。

Q. E. D.

类似文章:
IT » windows terminal, vim
在 VIM 里, Ctrl+V 用来标记一个矩形区域,可以同时操作多行文本,某些时候特别方便。但若用的 SSH 客户端是 windows terminal ,这个快捷键默认为粘贴文本,和 VIM 矩形区域标记的功能冲突(参考 issue: Ctrl+V (vertical selection in Vim) does not work)。
键盘流(指尽量使用键盘,少动用鼠标,尤其不要在鼠标和键盘之间来回切换)是我追求的目标。我工作中用的最多的软件是 Excel ,写代码写的最多的是 Excel/VBA。用得多了自然比较关注工作效率,所以我在 Excel 键盘流上略有心得,这里给大家分享一下。网上有很全的快捷键列表,但那不是我想写的,因为太多记不下来不实用。这里只列举一下我在实际工作中的的确确总是在用的,为自己方便,也共享给大伙们。
IT »
有时候用vim打开文件,每行结尾都有一个灰色的^M。这个原因是该文件在 windows 或 mac 系统上被创建:
编程 » vim
vim 有一个注释相关的插件 nerdcommenter ,特别好用。可以使用<leader>c快速切换注释状态(不是注释就改成注释,已经是注释则取消注释):
编程 » Linux, Vim, 字符编码
由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
编程 » Python
在 Python3 以上,通常说的字符串是指unicode字符串,以下将不再重复强调。
编程 » VIM
vim 里对代码简单对齐缩进,可以选定文本区域后用快捷键=。如果全文对齐,可以用ggvG=ggvG可以选中全文)。但对于某些复杂的代码(比如html),其对齐可能会乱。
安装 selenium ,使用 requestium 来调用 selenium 程序更为简单,因此可一起安装:
IT » vim
之前用的是 ctrlp ,现在改用 leaderf ,配置更简单(主要是没搞定 ctrlp 过滤指定文件和文件夹),功能也更多一点。
相似度: 0.060
编程 » Excel, VBA
Excel VBA 出错时给出的错误信息极少,需要充分利用各种工具来进行调试。
IT » Ubuntu
最近一台 ubuntu 服务器经常出现磁盘不足的情况,删除部分空间后,过一段时间空间又会不足。粗略估计每小时降低 4G。
周末绿野童军 9 家 10 来个孩子从凤凰岭南门出发,沿凤凰岭南线的黄普院、金刚石塔,途径南线的泉眼,上到高压线塔,然后往西南方向拐到小风口,再经过 1075 高地后下到大风口。