vim跳转
内容主要来源于以下两个博客:
文件内跳转
普通模式下左h,右l,上k,下j。(可以使用数字+hlkj,实现跳跃式移动)。
字符间跳转
跳转到当前字符的前面:普通模式下i。
跳转到当前字符的后面:不同模式下a。
字符串间跳转
向右跳:普通模式下跳转到串首w,普通模式下跳转到串尾e。
向左跳:普通模式下跳转到串首b,普通模式下跳转到串尾be(这个似乎没有专门的指令)。
高亮文件内的某字符串所有出现处,并在高亮处跳转:先将光标移动值至目标字符串处按
*。高亮匹配结果中往下跳:n。
高亮匹配结果中往上跳:N。关闭高亮:noh。
行内跳转
跳转到行末:普通模式下键入$光标移至行末,普通模式下键入A光标移至行末且进入插入模式。
跳转到行首:普通模式下键入0(^会忽略行首的空格,跳到第一个非空格字符处,0则跳到第一列)光标移至行首,普通模式下键入I光标移至行首且进入插入模式。
跳转到行内某个字符(比如字符a):往后跳f + a,往前跳F + a。另外还有t键,往后 - 跳到某字符前面t + a,往前跳到某字符后面T + a。
行间跳转
跳转到文件的首行:普通模式下
gg。跳转到文件的尾行:普通模式下
G。普通模式下跳转到指定行:
100gg或者100G。命令模式下跳转到指定行:
:100。
ps:以上两种形式都能跳转到文件的指定行(第100行)。
跳转到文件的50%:
50%。在可视行(可视行指Vim看起来是单独的一行,实际是某一行内容太多而换行显示,可视行不会累加行号。相对的就是实际行,实际行累加行号)间跳转:往上
gk,往下gj。符号间跳转
函数体间的跳转(注:只能跳到函数体开头,即
{处)。跳到上一个函数体:
[[。跳到下一个函数体:
]]。匹配字符
{}、[]、()间的跳转:%。
屏幕移动
翻页
- 保持光标位置不变(不变是相对的,当光标所在行超出光标可活动行范围时,光标保持在最上/最下可活动行)移动屏幕:向上翻页ctrl + y,向下翻页ctrl + e。
- 滚动半屏:向上滚动半屏ctrl + u,向下滚动半屏ctrl + d。
- 滚动一屏:向上滚动一屏ctrl + b,向下滚动一屏ctrl + f。
文件间跳转
Buffer缓存文件间跳转
- 跳转到下一个Buffer文件:
:bn。 - 跳转到上一个Buffer文件:
:bp。
- 跳转到下一个Buffer文件:
.h和.c文件间的跳转(此内容依赖于插件vim-scripts/a.vim)
- .h和.c文件切换:
:A。 - 跳转到光标所在的文件:
:IH,这个指令用来跳转到#include后面的文件很有用。或使用:gf
- .h和.c文件切换:
针对光标的跳转
- 光标历史位置往前(旧)调ctrl i。
- 光标历史位置往后(新)调ctrl o。
特殊位置标记的跳转
注意:以下这些跳转动作都只能在文件内,不支持跨文件跳转
- 跳转到上次修改的地方:
`.。 - 跳转到上次进入插入模式的地方:
`^。 - 给文件某位置(这里的位置是你添加标记时的光标位置)添加标记后跳转。添加标记:m a
z,这里的az既能是大写也能是小写,是区分大小写的。跳转到某标记位置:'a~z(单引号+标记), 这个标记要是已经添加过的。删除某个标记::delmarks a~z,删除全部标记::delmarks!。 :marks可以列出全部标记,一些特殊的标记如下.——最近编辑的位置0-9——最近使用的文件^——最近插入的位置'——上一次跳转前的位置"——上一次退出文件时的位置[——上一次修改的开始处]——上一次修改的结尾处
有关语法的跳转
前提是ctags已经生成了标签
- 跳转到定义处:
ctrl ]。 - 跳转到声明处:
[然后ctrl i。
