vim学习三之光标移动汇总


Vim 光标移动命令,包括移动 vim 光标到行首、行跳转、vim 匹配单词和匹配括号跳转,Vim 翻页命令等。

Vim光标移动简介

Vi/Vim中进行光标移动的命令是针对不同的操作单位而设计;不同的命令对应不同的操作单位。
在执行Vim光标移动命令时,首先要分清楚是采用哪种操作单位:一个字符、一个句子、一个段落、一行、一屏、一页
确定操作单位后,需要确定命令重复执行的次数。
Vim 光标移动命令的操作对象范围计算公式为:操作范围 = 操作次数 x 操作单位
例如:5h 命令表示左移 5 个字符,8w 命令右移 8 个单词。

Vim移动光标命令

上、下、左、右移动

      ^
      k
<h          l>
      j
      v

Vim的上下左右移动光标命令是经过精心设计的,我们在使用编辑器时最常用的操作是下移光标。
而键盘上的 j、k 按键使用最方便,所以分别用来作为下移、上移光标。
h、l 分别位于 j、k 的两侧,根据其所在方位用来实现光标的左移和右移。

行级移动

0         移动光标到当前行行首
$         移动光标到当前行行尾
^         移动光标到当前行的第一个非空字符
nG       移动光标到当前文件的第n行
:n       移动光标到当前文件的第n行 (同上)

文件首尾移动

gg 或 :0       移动光标到当前文件的第一行
GG 或 :$       移动光标到当前未经的最后一行

单词级移动

w 或 W          移动到下一单词的开头(word)
b 或 B          移动到上一单词的开头
e 或 E          移动到光标所在单词的末尾(end of word)

请添加图片描述
W、B、E命令操作的单词是以空白字符(空格、Tab)分隔的字串。
比如字符串“str1-str2 str3-str4”,对W、B、E命令来说是两个单词,而对w、b、e命令来说则是四个单词。

匹配单词级移动

*        移动光标到匹配光标当前所在单词的下一个单词
#        移动光标到匹配光标当前所在单词的上一个单词

匹配括号移动

%        移动光标到括号另外半部分
括号包括()、{}、[]

屏幕级移动

H       移动光标到屏幕的第一行
M       移动光标到屏幕的中间一行
L       移动光标到屏幕的最后一行

段落级移动

}       移动光标到当前段落的末尾
{       移到光标到当前段落的开头

翻页

Ctrl + f       向前滚动一页
Ctrl + b       向后滚动一页
Ctrl + u       向前滚动半页
Ctrl + d       向后滚动半页

屏幕行和实际行

与许多文本编辑器不同,Vim 会区分实际行与屏幕行。当 Vim 的 wrap 设置被启用时(缺省启用),每个超出窗口宽度的文本行都会被回绕显示(自动换行),来保证所有文本都能在当前窗口中完整展示出来
因此,文件中的一行可能会被显示为屏幕上的若干行,从而出现了Vim 实际行与屏幕行的差异。

光标移动实际行与屏幕行

当 Vim 启用 number 选项设置成显示行号后,以行号开头的行对应一个实际行,它们会占据着屏幕上的一行或几行;若某一行文本为适应窗口宽度而回绕时,回绕行的前面则不会显示行号。
Vim普通模式下使用 j 和 k 命令可向下及向上移动光标,注意:这里提到的行移动是指实际行。
如果需要按屏幕行向下、向上移动光标,则需要分别使用Vim命令 gj 和 gk

对于移动光标到行首、行尾等操作,Vim 也提供了对应以屏幕行为对象的命令。下表对操作实际行和屏幕行的命令进行了总结。

命令			光标动作
j				向下移动一个实际行
gj				向下移动一个屏幕行
k				向上移动一个实际行
gk			向上移动一个屏幕行
0				移动到实际行的行首
g0			移动到屏幕行的行首
^				移动到实际行的第一个非空白字符
g^			移动到屏幕行的第一个非空白字符
$				移动到实际行的行尾
g$			移动到屏幕行的行尾

自定义映射面向行的动作命令

如果想让 j 及 k 命令操作屏幕行而不是实际行,可以通过Vim按键映射修改默认的 j、k的功能。
把以下按键配置配置项加到 ~/.vimrc 文件中即可实现自定义面向屏幕行的动作命令。

nnoremap k gk
nnoremap gk k
nnoremap j gj
nnoremap gj j
注:上述映射项使 j 和 k 基于屏幕行向下或向上移动,而 gj 和 gk 则基于实际行向下和向上移动,与 Vim 的缺省设置刚好相反。

光标移动和其他命令联动

很多命令都可以和Vim教程网总结的vim光标移动命令连动。

基本命令模式为:<start_position><command><end_position>。

例如,Vim 命令 0y$ 拆开分别表示:0 移动光标到当前行首;y 复制;$ 当前行尾。所以,命令 0y$ 意味着复制光标当前所在行所有内容。
例如,Vim 命令 ye,表示从当前位置拷贝到当前所在单词的最后一个字符。

参考

光标移动汇总:
https://vimjc.com/vim-cursor.html

光标移动之实际行和屏幕行:
https://vimjc.com/vim-line-downward.html
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值