原文地址:Vim实战指南(二):光标移动技巧
Introduction
提升Vim/vi的打字效率的一个技巧就是快速移动光标。或许你觉得这不值一提,用hjkl或者上下左右也能移动,不过相信我,我下面要介绍的移动光标技巧绝对物超所值。
按屏移动
在命令行模式下,vi的整屏移动命令可以按以下方式速记:
Ctrl+F :forward:同PageDown键,向下移动整屏
Ctrl+B: backward:同PageUp键,向上移动整屏
Ctrl+D: down:向下移动半屏
Ctrl+U: up:向上移动半屏
z[Enter]:使光标指向的当前行成为屏幕的首行
z.:使光标指向的当前行成为屏幕的中间行
z-:使光标指向的挡前行成为屏幕的尾行
H: home:使光标移动到当前屏幕的首行
M: middle:使光标移动到当前屏幕的中间行
L: last:使光标移动到当前屏幕的尾行
[Enter]:使光标移动到下一行的第一个字符
+:同[Enter],使光标移动到下一行的第一个字符
-:使光标移动到上一行的第一个字符
同样,你可以利用vi的组合命令特性,采用数字+字符的方式来移动,如
3H: 3 lines below home line:使光标移动到当前屏幕的首行的下数第三行
3L: 3 lines above last line:使光标移动到当前屏幕的尾行的上数第三行
按字词移动
除了按屏移动,你也需要按字/词来移动,同样在命令行模式下,vi的整屏移动命令可以按以下方式速记:
e: move to end of word:移动到字/词的尾部(包括标点)
E: move to large end of word,移动到字/词的尾部(忽略标点)
(:移动到句首(根据?.!等标点符号)
):移动到下一句
{:移动到段首(根据空行)
}:移动到下一段
[[:移动到章首
]]:移动到下一章
同样,你可以利用vi的组合命令特性,采用数字+字符的方式来移动,如
3)):移动到后三句
按搜索词移动
搜索移动应该是最常使用的移动方式,在命令行模式下输入'/'来启动搜索
/assignment[Enter]:在文中搜索assignment
/programming[Enter]:在文中搜索programming
此处有一个技巧,如果你想搜索an,你可以在an前后各敲一个空格,搜索
/ an [Enter]
当你希望继续搜索时,输入
n:vi将跳到下一个匹配的搜索的地方
N:vi将跳到上一个匹配的搜索的地方
/:从光标位置向后搜索
?:从光标位置向前搜索
此处有一个技巧,如果你觉得搜索的时候屏幕跳动太快,可以输入
:set nowrapscan
搜索的高级用法这里先卖个关子,以免太过复杂,学习曲线太陡,后面我再罗列
如果你只希望在当前行搜索,可以用下面的方法
fa: find a:查找当前行光标后的字符a
Fa:查找当前行光标前的字符a
ta: 同fa,区别在于查找到时光标在a的前面
Tx:同Fa,区别在于查找到时光标在a的前面
;:继续从光标位置向后搜索
,:继续从光标位置向前搜索
按行列号移动
在日常编程中,经常需要直接根据行号来跳转,如编译错误、日志行数等
跳转前,你需要打开行号,输入
:set nu
下面是移动命令,利用vi的组合命令特性,采用数字+字符的方式来移动
3G:移动到第三行
3|:移动到第三列
``:移动当跳转前的行,按搜索词移动也可用
'':同``,区别在于光标跳转到行首
最后,你可以输入Ctrl+G来查看当前行列号,以及文本的总行数
Summary
上述的基本命令一定要熟记于心,加强练习。不要觉得命令太多,快速移动光标绝对是提升编辑速度的利器。