总结
- 逐字逐行
j:向下一行k:向上一行h:向左一个字符l:向右一个字符0:移至行首。$:移至行尾。^:移动至行首第一个非空字符g_:移动至行尾最后一个非空字符,但行尾最后严禁多余的空格。
- 逐词移动
w:移动至下一个word首部W:移动至下一个WORD首部b:移动至上一个word首部B:移动至上一个WORD首部e:移动至下一个word尾部E:移动至下一个WORD尾部
- 查词移动
f<char>:移动至下个字母位置。如fa,则是移动至下一个字母a的位置。F<char>:移动至上个字母位置。如Fa,则是移动至上一个字母a的位置。t<char>:移动至下个字母位置前一个字符。T<char>:移动至上个字母位置后一个字符。;:重复上次查词移动操作
- 高频移动
G:移至最后一行gg:移至首行<n>G:移至第n行:n<br>:移至第n行。<br>为回车<ctrl-o>:移至上次光标出现位置<ctrl-i>:移至下次光标出现位置'': 上次切换处, 类似Ctrl + o'.: 上次编辑处*:光标选中词匹配下一个;#:光标选中词匹配上一个;gd: 前往定义处m<char>: 标记,随后使用'<char>就可以跳转到标记处
1. 前提提要、场景
vim 中在 insert mode 模式下是无法移动光标的,只能在 normal mode 下移动。除了 hjkl 移动光标,还有许多快捷的方式移动光标
2. 逐字逐行
j:向下一行k:向上一行h:向左一个字符l:向右一个字符0:移至行首。$:移至行尾。^:移动至行首第一个非空字符g_:移动至行尾最后一个非空字符,但行尾最后严禁多余的空格。
Tip:小技巧,在 vim 中通过命令 :set list,可显示非空字符等特殊字符。如果取消显示,可使用 :set nolist。:set number 显示行号
3. 逐词移动
vim 关于词的两个概念:
word:数字、字符、下划线构成的词。比如yarn.lock是三个 word。WORD:非空字符构成的词。比如yarn.lock是一个 WORD。
快捷键:
w:移动至下一个word首部W:移动至下一个WORD首部b:移动至上一个word首部B:移动至上一个WORD首部e:移动至下一个word尾部E:移动至下一个WORD尾部
4. 查词移动
有时,直接定位到某个字符更加方便。以下命令只对当前行有效
f<char>:移动至下个字母位置。如fa,则是移动至下一个字母a的位置。F<char>:移动至上个字母位置。如Fa,则是移动至上一个字母a的位置。t<char>:移动至下个字母位置前一个字符。T<char>:移动至上个字母位置后一个字符。
如此之外,还有一个 ;,可重复上次查词动作。比如,想查找字符 a 第三次出现位置,除了使用 3fa,还可以使用 ;;。
;:重复上次查词移动操作
5. 高频移动
工作中常见的较为高频的移动操作。
G:移至最后一行gg:移至首行<n>G:移至第n行:n<br>:移至第n行。<br>为回车<ctrl-o>:移至上次光标出现位置<ctrl-i>:移至下次光标出现位置'': 上次切换处, 类似Ctrl + o'.: 上次编辑处*:光标选中词匹配下一个;#:光标选中词匹配上一个;gd: 前往定义处m<char>: 标记,随后使用'<char>就可以跳转到标记处