vim 光标快速移动技巧总结(vim高级操作的基础)

来源:互联网 发布:java什么是进程和线程 编辑:程序博客网 时间:2024/05/18 10:49

  • 简单的移动适合小范围移动
  • 利用查找适合大范围移动
  • 利用wb以word为单位进行移动类似hjkl适合小范围移动
  • 移动到行首行尾适合行内移动
  • 移动到文本开头和文本结尾适合大范围移动
  • 利用行号移动到某一行适合大范围移动
  • 翻页适合大范围移动
  • 利用标记mark命令

以下说法,仅个人观点。
vim移动方式,并非只有hjkl这样简单粗暴的方式。熟悉更多移动光标的方式,对其它类似复制、change、delete等操作都有意想不到的用处。比如d/abc表示删除至abc字符之前,解释一下就是/abc表示查找关键词abc,d表示删除。总之,光标快速移动是进阶vim最基本最重要的。
命令虽然多,但是用十次以上,就能熟练了,关键是有花时间学习的意义。

简单的移动(适合小范围移动)

hjkl
用熟了,相对其它编辑器或者鼠标来说,确实挺方便的。
配合数字。
2j表示向下移动2行

利用查找(适合大范围移动)

/hello
向后查找关键词hello,回车就到了后面第一个hello处。
?hello
向前查找关键词hello
*向后查找当前光标处的单词
#向前查找当前光标处的单词

还有一个行内快速移动,利用f命令搜索某字符方式(适合行内移动)
f表示向后移动到某字符
比如fa表示向后移动到字符a处
Fa表示向前移动到字符a处。
这个操作,我认为不如/?查找用的爽,因为/?可以查找完整的单词。

利用w,b,以word为单位进行移动,类似hjkl(适合小范围移动)

同理,配合数字。
2w表示向后移动2个word;
2b表示向前移动2个word;
2e表示向后移动2个word,但是会移动到word字符之后。
如果想忽略标点符号的word,就用大写
W
B
E

移动到行首行尾(适合行内移动)

^表示移动到行首第一个word,即行首有空格的情况,不会移动到空格之前,而是移动到空格之后,第一个word之前;
0表示移动到行首;即行首有空格的情况,会移动到空格之前;
$表示移动到行末;即行末有空格的情况,会移动到空格之后;
如果想移动到行末最后一个非空白的字符处,就输入命令$b。一般来说,写代码,行末不会有空格存在的。这条应用没多大意义。

移动到文本开头和文本结尾(适合大范围移动)

gg表示移动到文本开头;
G表示移动到文本结尾

利用行号移动到某一行(适合大范围移动)

:123表示移动到第123行

翻页(适合大范围移动)

ctrl+f表示向下翻页
ctrl+b表示向上翻页

利用标记mark命令

ma表示标记该行为a;包括第几列的信息,都在标记a里。
‘a表示跳转到标记a处;会跳转到标记a的行首。单引号’
`a表示跳转到标记a处;会跳转到标记a的行,包括第几列。更精准。按键在波浪号处。

快速移动技巧基本就这些吧。
网上还有括号移动的,段落移动的,其实用上述技巧就够了。如果没有特别有意义的,不如熟练掌握上述技巧。
比如移动到上一个{,那么输入命令?{

熟悉快速移动技巧后。让我们想想,对于其它操作行为有很多可以举一反三的地方。
比如复制一部分文字,从time到tutor之间的内容。
The approximate time required to complete the tutor is 25-30 minutes.
最基本的就是用hjkl移动到time处,v命令,用hjkl移动到tutor,选中后,按y。命令结束。
熟悉快速移动后,/time回车,y/tutor。命令结束。
同理,如果delete,一样。/time回车,d/tutor。命令结束。
同理,如果change,一样。/time回车,c/tutor。命令结束。

change命令,适合修改代码。很有用。具体介绍可以输入命令:help c
比如cc表示删除本行并开始重写。删除本行同时执行insert模式。

1 0