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