VIM 使用 进阶 教程 (一) 破除坏习惯 建立新习惯

一、破除坏习惯 建立新习惯  使用方向键来控制你的VIM游标不是个好习惯,而且就像很多坏习惯一样,这个时很难改掉。


为了改掉这个坏习惯,在你的vimrc里边加一点东西帮你吧:
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>


这一小段代码让每个方向键都没有了作用“no operation",或者说,隐藏了它们。
下次你把你的手移动到方向键上,按下去时会发现什么事情都不会发生。这个就是用来提醒你把你的收回来,在主键盘区域。使用h,j.k,l,它们在等待着你。


学习在不离开主键盘区域的情况下使用VIM是这篇文章的第一个部分。如果你还在使用方向键移动方向键,那么你就应该现在就让它们消失功能。(disable
them tody).


译者注:其实这样让方向键消失只能在一般模式和命令模式下有用。出入模式下方向键还是可以的。


二、停止使用h,j,k,l这些键!
没有什么比一次移动一行或者一列更慢了。VIM提供了很多快速地移动方式,所有没有必要说什么“按j是下移才是VIM模式”。


学习VIM并不像学习一门外语一样,多学一个单词你就能多说些东西。它需要时间和练习来加速VIM的效率,然后你每次新学会一个移动方式(motion)那么你就会发现它能够节省你的时间和敲击数。


为了告诉为什么学习这个,我得说使用h,j,k,l是个坏习惯。所以你应该继续让它们消失才对。


现在,你想要移动的时候,必须考虑使用其他方式了。这可能听起来有点疯狂(毕竟方向键和JKLH都没有了),现在让我啦介绍几个有用的移动方式。学习它们不会花费多少力气,但是回报会是丰厚的。


2.1依照单词(译者注:而非行列)移动是h和l命令速度的5倍


w,b,e和ge命令能够让我们向前或者前后移动到一个单词的开头或者结尾.W,B,E,gE会对WORDS做同样的事情。
【译者注:原文时w,b,e,ge会对words有如上效果,W,B,E,gE会对WORDS由如上效果。vim的文章中说明的时words指的是一个单词,或者一个数字,对于汉子而言,就是一段话,例如在:
#include<stdio.h>
int main(){
printf("Hello World\n");
return 0;
}
//这是个例子
那么按下w之后,就会一个单词一个单词得跳,在汉语中会把这个字符串一次性跳过,因为一个标点符号或者一个单词就是一个words.
那么WORDS值得时什么,VIM的文档中指出,一行中没有空格的就称为时一个WORDS,那么按下W之后,第一行就会一次性跳到第二行(因为没有空格,第三行第一次跳到中间,然后再按一下,就到下一行了).】

如果我们说一个单词的平均长度是5字符,那么使用这些字符就会比使用h,l快5倍。
好了,如果说你想每次光标移动到单词的开头的话,那么就记住w,b这两个吧,如果你想每次移动到单词的结尾,那就记住e和ge吧。

2.2在一行中移动利用单词搜索进行移动会瞬间完成


按键f,F,t,T,;和,。这些命令构成了词汇的搜索动作。当你按下f{char}之后,VIM会向前寻找含有{char}的,如果找到了,VIM会直接到那里的。如果没有找到,什么事情都不会发生(VIM有可能会发出一个蜂鸣,但是你可以使用setting“visualbell"把它弄成静音)
试试这个:若果一个文档的某行有很多字符,要移动到一个出现频率很低的字符那里,例如一个标点或者一个大写字符,按住f然后敲入你找的那个字符,就两下,你找到了吗?(注,显然,如果要用h,l的话,需要较多时间)。
如果光标一次没有到你想找的那个地方,那么按下;继续重复上一动作。按住;一直到你找打它。如果你超了,那么就按下,逆向寻找。
这种方式很适合移动到标点或者大写字母什么的那种出现频率比较低的字符,如果单词很常见,就不是很方便了。
字符寻找这种方式可以让你移动的速度就像你的脑袋转速一样快。
3.使用<NOP>来破除坏习惯
其实我并不建议永久的消除hjkl,毕竟很有用,但是,如果你一时改不过来使用刚刚说的这几个命令的话,那么禁用hjkl这几个命令,仅仅一个下午也是很有用的。


4.使用hardmode

这个听起来似乎是一个有意思的挑战,你可以安装hardmode这个插件。这个插件提供了一个方便的命令来使得方向键和hjkl失效,run:
:call HardMode()
如果这个对你太难的话,你可以run:

:call EasyMode()


原文连接:http://vimcasts.org/blog/2013/02/habit-breaking-habit-making/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值