目录
- Vim光标移动简介
- Vim移动光标命令
- 上、下、左、右移动
- 行级移动
- 文件首尾移动
- 单词级移动
- 匹配单词级移动
- 匹配括号移动
- 屏幕级移动
- 段落级移动
- 翻页
- 屏幕行和实际行
- 光标移动实际行与屏幕行
- 自定义映射面向行的动作命令
- 光标移动和其他命令联动
- 参考
Vim 光标移动命令,包括移动 vim 光标到行首、行跳转、vim 匹配单词和匹配括号跳转,Vim 翻页命令等。
Vim光标移动简介
Vi/Vim中进行光标移动的命令是针对不同的操作单位而设计;不同的命令对应不同的操作单位。
在执行Vim光标移动命令时,首先要分清楚是采用哪种操作单位:一个字符、一个句子、一个段落、一行、一屏、一页。
确定操作单位后,需要确定命令重复执行的次数。
Vim 光标移动命令的操作对象范围计算公式为:操作范围 = 操作次数 x 操作单位
例如:5h 命令表示左移 5 个字符,8w 命令右移 8 个单词。
Vim移动光标命令
上、下、左、右移动
Vim的上下左右移动光标命令是经过精心设计的,我们在使用编辑器时最常用的操作是下移光标。
而键盘上的 j、k 按键使用最方便,所以分别用来作为下移、上移光标。
h、l 分别位于 j、k 的两侧,根据其所在方位用来实现光标的左移和右移。
行级移动
文件首尾移动
单词级移动
W、B、E命令操作的单词是以空白字符(空格、Tab)分隔的字串。
比如字符串“str1-str2 str3-str4”,对W、B、E命令来说是两个单词,而对w、b、e命令来说则是四个单词。
匹配单词级移动
匹配括号移动
屏幕级移动
段落级移动
翻页
屏幕行和实际行
与许多文本编辑器不同,Vim 会区分实际行与屏幕行。当 Vim 的 wrap 设置被启用时(缺省启用),每个超出窗口宽度的文本行都会被回绕显示(自动换行),来保证所有文本都能在当前窗口中完整展示出来。
因此,文件中的一行可能会被显示为屏幕上的若干行,从而出现了Vim 实际行与屏幕行的差异。
光标移动实际行与屏幕行
当 Vim 启用 number 选项设置成显示行号后,以行号开头的行对应一个实际行,它们会占据着屏幕上的一行或几行;若某一行文本为适应窗口宽度而回绕时,回绕行的前面则不会显示行号。
Vim普通模式下使用 j 和 k 命令可向下及向上移动光标,注意:这里提到的行移动是指实际行。
而如果需要按屏幕行向下、向上移动光标,则需要分别使用Vim命令 gj 和 gk。
对于移动光标到行首、行尾等操作,Vim 也提供了对应以屏幕行为对象的命令。下表对操作实际行和屏幕行的命令进行了总结。
自定义映射面向行的动作命令
如果想让 j 及 k 命令操作屏幕行而不是实际行,可以通过Vim按键映射修改默认的 j、k的功能。
把以下按键配置配置项加到 ~/.vimrc 文件中即可实现自定义面向屏幕行的动作命令。
光标移动和其他命令联动
很多命令都可以和Vim教程网总结的vim光标移动命令连动。
例如,Vim 命令 0y$ 拆开分别表示:0 移动光标到当前行首;y 复制;$ 当前行尾。所以,命令 0y$ 意味着复制光标当前所在行所有内容。
例如,Vim 命令 ye,表示从当前位置拷贝到当前所在单词的最后一个字符。
参考