前言

  • 此前做过一篇极为浅的Vim入门介绍,但是当时理解不够深刻,没能将Vim的光标跳转的全部功能展示出来
  • 本篇就是对Vim光标跳转快捷键的总结,按我理解的常用程度从大到小排序
  • 如果使用neovim,可以使用which-key更直观地学习和记忆快捷键

快捷键

直接进行的快捷键

  • hjkl:最基本的移动键
  • e:移动到下一单词结尾
  • b:移动到上一单词结尾
  • 0:移动到行首,^与其等价,因此^没有使用场景,可以用作其它快捷键
  • G:移动到行末,与其配对的是gg,通过输入前置数字可以跳转至指定行,例如10G表示跳转到第十行
  • {/}:移动到上/下一段落
  • n/N:跳转到下一个/上一个搜索匹配成功的位置
  • (/)移动到句子,原生的()但并不常用,但在包含lsp的文件中,可以使用一些插件(如aerial)覆盖()的行为使其更有作用,而且它更好按
  • C-d/C-u:跳转下/上半页,许多插件的帮助也使用它们进行翻页,例如which-key
  • <C-o>/<C-i>:移动到上/下次鼠标停顿的位置,停顿的计算详见跳转列表
  • $:移动到行末,由于可以通过A直接在行末插入,而在行末的普通模式可能只会进行粘贴,因此不常用
  • %:循环移动到所在的括号对,在引入treesitter以及一些插件后,%也并不常用
  • H/M/L:移动到当前窗口的顶部/中间/底部

使用等待模式的快捷键

  • 等待模式是很有说法的模式,不止光标跳转,替换、删除等快捷方式都可以通过等待模式实现奇妙的联动
  • g:
    • gv:选中上一次被选中的部分
    • gd/gi/gr:它们不是原生的快捷键,恰巧可以配置lsp提供的功能,分别绑定到跳转到定义/实现/引用
    • gO:显示lsp提供的大纲,可以由其它快捷键和插件代替,例如aerial
    • gf:跳转到光标所在字符串指向的文件,基本会被lsp替代
    • gu/gU:按下后执行可以直接完成的跳转命令,会在跳转的同时将沿途的字母变为小写/大写
  • z:
    • zz:将光标所在行移动到窗口正中
    • zt/zb:将光标所在行移动到窗口顶部/底部,并不常用

使用命令模式的快捷键

跳转列表