VIM从入门到精通(移动的高级技巧)

在上一篇中,我介绍了vim插入、删除、移动等基本技巧,现在主要介绍移动,移动的内容包括:以Word为单位的光标移动,将光标移到行首或行尾,将光标移动到指定的字符上,将光标移动到匹配的括号上,将光标移动到指定的行上等

现在介绍以单词为单位的移动,顾名思义,以单词为单位就是每次移动一个单词,使用”w”命令可以将光标向前移动一个word. 象大多数其它的Vim命令一样, 你可以在”w“前面指定一个数字前辍以向前移动指定个数的word. 比如“3w”将光标向前移动3个words. 请看下面的命令示意:

注意如果当前光标已经在一个word的首字符上时”w“命令还是会将光标移动到下一个word的首字符上.“b” 命令则将光标向后移动到前一个word的首字符上:

同样, “e” 命令会将光标移动到下一个word的最后一个字符。象 “w” 有一个反方向的命令 “b” 与之对应一样, “e” 命令有 “ge”, 它将光标移动到前一
个word的最后一个字符上

如果光标已经位于当前行的最后一个word, 则 “w” 会移动到下一行的第一个word上去. 所以使用 “w” 就可以在整个文本段中移动, 速度要比 “l”  快
多了. “b” 也一样, 只是方向相反
现在介绍怎么移动到行首和行尾

“$” 命令将光标移动到当前行行尾. 如果你的键盘上有一个<End>键,它的作用也一样. “^” 命令将光标移动到当前行的第一个非空白字符上.  “0″命令则总是把光标移动到当前行的第一个字符上. <Home>键也是如此. 图示如下:

“$”命令还可接受一个计数, 就象其它的移动命令一样.但是移动到一行的行尾多于一次没有任何意义. 所以它的功能被赋予为移动到下一行
的行尾. 如“1$”会将光标移动到当前行行尾, “2$”则会移动到下一行的行尾, 如此类推.

“0″(数字0)命令却不能接受类似这样的计数, 因为“0″本身就是一个数字, 所
以合起来”0″会成为你前面指定的计数的一部分, 另外, 并不象其它命令
一样可以举一反三, 命令”^”前加上一个计数并没有任何效果

还有一个更快速的移动方法,我可以移动到任何一个指定的字符上,命令“fx”在当前行上查找下一个字符x. 提示: “f”意为”find”.例如:光标位于下行的开头, 假如你要移动到单词human中的字符h上去. 只要执行命令”fh”就可以了

上图同时展示了命令"fy"会将光标定位于单词really的尾部

上图同时展示了命令"fy"会将光标定位于单词really的尾部

该命令可以带一个命令计数; 命令”3fl”会把光标定位于”foul” 的”l”上

把光标定位于"foul" 的"l"上

把光标定位于"foul" 的"l"上

“tx”命令形同”fx”命令, 只不过它不是把光标停留在被搜索字符上, 而是在它之前的一个字符上. 提示: “t”意为”To”. 该命令的反方向版是”Tx”

这4个命令都可以用 “;” 来重复. 以 “,” 也是重复同样的命令, 但是方向与原命令的方向相反. 无论如何, 这4个命令都不会使光标跑到其它行上
去. 即使当前的句子还没有结束

下面这个技巧在编写程序的时候很有用,在函数和类中,我们一般要有对称的{} 或者 (),那么我们怎么样能从一个括弧移动到另一个括弧

使用命令 % : 它跳转到与当前光标下的括号相匹配的那一个括号上去. 如果当前光标在”(“上, 它就向前跳转到与它匹配的”)”上, 如果当前在”)”上, 它就向后自动跳转到匹配的”(“上去,这对方括号[]和花括号fg同样适用

如果当前光标并没有停留在一个可用的括号字符上, “%”也会向前为它找到一个. 所以如果当前光标位于上例中的行首, “%”命令还是会向前先找到第一个”(“,然后找到与它匹配的”)”

还有一个是对程序员非常有用的技巧,也是必备的技巧,那就是转移到指定的行,为什么要用这个功能呢?主要是程序在编译的时候,编译器会提示你在哪行有错误,这个时候用“G”这个命令就太容易了,例如在 20行又错误,那么就在vim中输入“20G”,此时光标就跳到第20行了。此外像”20j“这样的命令会向下移动20行,也可以使用。如果想移动到文章的中央怎么办,怎么确定中央在那里?这时可以输入”50%” 移动到文章50%的地方,好记吧!

 

如果想要知道当前所在的位置,可以使用CTRL-G命令,在vim的下面会出现如下图所示的状态栏:

这行信息显示了你正在编辑的文件名, 当前光标所在行的行号, 总的行数, 以及当前行所在文件中的百分比和当前光标所在的列的信息. 有时候你会看到两个以-分隔的数字来表示列, 如”col 2-9″. 这意味着你的光标位于第二个字符上, 因为第一个字符是一个跳格键, 占了8个字符的位置, 所以屏幕上看起来该列位置是9

有一个命令也是程序员经常用的,我已经把它加到.vimrc文件里面了(什么是.vimrc),那就是 :set nu 这个命令可以显示行号,在.vimrc中要去掉前面的冒号(set nu).

最后介绍一下额外的几个命令:

CTRL-U命令会使文本向下滚动半屏. 也可以想象为在显示文本的窗口向上滚动了半屏. 不要担心这种容易混淆的解释, 不是只有你一个人搞不清楚.
CTRL-D命令将窗口向下移动半屏, 所以相当于文本向上滚动了半屏。要一次滚动一行可以使用CTRL-E(向上滚动)和CTRL-Y(向下滚动)

要向前滚动一整屏(实际上是整屏去两行)使用命令CTRL-F. 另外CTRL-B是它的反向版.很幸运CTRL-F是向前, CTRL-B是向后, 好记吧

本文固定链接: http://blogdaily.net/?p=27 | 孤独的风中一匹狼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值