Vim的使用心得

        这段时间一直在跟Linux打交道,正好顺便也学习了一下Vi的使用,就此准备长期用下去了。目的很简单,就是为了更熟练地使用Linux而做准备。Vi与其它Windows环境下的文本编辑器不同在于它的操作方式几乎可以全命令来进行工作,节省了鼠标在屏幕上划拉的时间,而且新鲜感十足。

        我是在Window环境下使用gVim7.3来进行练习的,熟悉并掌握它并不难,我总结了以下两点。

        一、自由切换各种模式
        靠“手感”,怎么说呢?Vi最基本的有三种模式,它们切换后的展现形态很相似,即不容易区分,刚开始用的时候,总是分不清哪个是一般模式,哪个是编辑模式,真的是很恼火。我用了半个小时先熟悉了一下这三种模式切换的展现形态,这点真的很重要;学好Vi的根基就在于此,必须要搞明白。建议大家学Vi命令之前,首先弄清三种模式的切换,而Vim在此基础上又扩展了很多模式,不过都是基于这三种模式而组合成形成的。
        有一个小经验,就是注意光标的线条粗细,当线条特别细的时候那是编辑模式,别妄想输入命令;线条变粗的时候那就是一般模式了,就可以输入命令。
   
        二、简化模式
        熟悉过后,就可以进行灵活变化了,我归纳了这三个模式的大致意图。
  
1.想使用命令就进入一般模式。
2.想输入文字,就进入编辑模式。
3.想输入命令就要先进了一般模式。

        可以发现,有两个模式存在着重复情况,因此可简化成为两种模式:一般模式和编辑模式,说白了就是输入命令操作和编辑文本操作。切换二者的时候无非就是Esc或a、i、o、r。
        这里我省去了命令模式这么一个概念,我的考虑是这样:我经常用的命令都是需要进入到一般模式才能使用,索性就去掉它,在下意识使用的时候不用去考虑要切换三种模式的形态,而只是针对两种模式进行切换,复杂度降低,效率肯定会高很多。 所谓操作熟练,我个人理解就是下意识的操作,大脑不用经过多么深思熟虑得就能完成工作。
        小提示:有个弊端就是由于中文输入法的存在,必须要先把中文切换成英文,才能正常使用命令,使操作不会太连贯,总之习惯就好了。

        三、常用命令介绍
        详细的命令我就不一一介绍了,仅介绍我最近常用的命令,高级特性我也没专门去研究,也很少能用上,网上介绍的都很详细,大家可自行查阅。
   
        以操作为驱动,来输入命令;而不是输入命令来进行某种操作,这是闲着蛋疼的时候瞎琢磨出来的小众方法。由于Vi的命令可以组合着使用,第一反应应该是操作,而不是命令,这样命令的搭配灵活度就显得宽广了。
        提示:懂得这意思就足够了,没必要深究,关键还是看熟不熟练。还有就是命令中的英文字母是区分大小写的。   

        分类来介绍吧,以便加强潜意识的认知敏感度。
        1.模式的切换
        (1)一般模式切换到编辑模式:i(在光标所在当前字符之前插入字符)、a(在光标所在当前字符之后追加字符)、o(在光标所在当前行下面追加新行)、r(只替换光标所在当前字符)
    它们的大写形式就不用那么关注了,目的只有一个,切换到编辑模式就OK。

        (2)编辑模式切换到一般模式:Esc(传说中的Esc)
     个人建议:只要你在写东西的时候,需要停下来,思考一阵儿的时候,别忘了按Esc,也就是说除编辑文本的情况下,其余情况都要处于一般模式下,这样才叫真正地使用Vi。
        2.光标的移动
        (1)最基础的移动:h(左),j(下),k(上),l(右)
        花费大约十几秒的时间就能够熟悉了。我自己编着玩的口诀: 左右在两边,下上在中间。正常情况下,用vi打开文本,光标都会处在第一行,也就是说向下移动的欲望比向上移动的欲望要强烈,所以j在k的前面。
        用键盘的上下左右键也是可以的,反正怎么舒服怎么来。
        (2)翻页移动:ctrl+f(屏幕下一页),ctrl+b(屏幕上一页)
        用键盘的PgUp和PgDown也是可以的。
        (3)移动到首字符和移动到末字符:0(首),$(末)
        这个在自动换行的时候非常有用。什么是自动换行?不是手动按回车换行的那种换行。当屏幕宽度放不下所显示文字的时候,则Vim自动换行,这种换行不会算做行数,也就是说属于一行中的文字。当用j和k定位行时,定位的是之前光标所停留在的位置上,而不是直接定位到屏幕中你想要定位到的那个行,只能用h或j来去定位到那行。所以使用命令0和$就显得十分便捷了。描述的不是很清晰,大家可以自行试一下。
        (4)移动到首行和移动到末行:gg(移动到首行),G(移动到末行)
        (5)移动到指定行:ngg(n代表着数字,gg代表着移动)
        例如:20gg,形象化解释就是这个样子,我要去20行,go!go!
        (6)移动到模糊行:n+回车
        例如:20+回车,我要向下移动20行!
        3.全文搜索与替换
        (1)搜索:/要搜索的文字
        例如:在一般模式下直接输入命令/Vim,然后回车进行查找所有匹配值,如果有多个Vim,就按n一个一个查找。  
        (2)替换::%s/被替换的文本/要替换的文本/g(gc)
        例如:在一般模式下直接输入命令:%s/Vim/vim/gc,会查找到所有Vim的匹配值,然后会逐个询问你是否替换成vim;y是替换,n是不替换。
        4.文本编辑的基本操作
        (1)删除:x(删除当前字符),dd(删除行),ndd(n代表行数,表示删除多少行,包括当前行),dG(删除当前行及后面的所有行)
        d0(删除当前字符之前从首字符起的字符,不包括当前字符),d$(删除当前字符及之后至末字符的字符,包括当前字符)
        (2)复制:yy,nyy,yG,y0,y$
     上面的功能特性与删除类似,弄懂一个,其余均能融会贯通。
        (3)粘贴:p
        (4)合并两行的文本:J(将光标所在当前行与其下一行进行合并)
        (5)撤销与恢复:u(Vim支持无限次撤销),ctrl+r(无限次恢复)
        (6)剪切:Windows下ctrl+x,Linux下Shit+Insert
        (7)选中整行:V(注意,大写V)
        5.文件的基本操作
        (1)将文件写入磁盘: :w(写入),:w!(针对只读文件,强行写入),:wq(写入并退出),:x(写入并退出),:w 文件名(文件另存为)
        (2)退出Vim: :q(退出),:q!(文件写入过了,但不保存强行退出)
        6.其他常用命令
        (1)操作Vi过程中,需要去调用shell命令 ::!命令
        Window命令或Linux命令都可以。例如::!cmd,:!ls
        (2)再打开一个文件进行编辑,也就是创建一个新的tab::tabnew 文件路径
        如果tab多的话,可用命令gt来切换它们。
        (3)垂直分割窗口:ctrl+w+v
        输入的时候会两边会同布改变,这个命令只对gVim有效,shell中无效。
        切换两个窗口的命令是ctrl+w+w。

        四、Vim环境变量的配置
        Vim提供了非常灵活的环境参数供我们来配置它,有点像DIY的精神。下面还是以简单为主,介绍几个经常配置的变量:
"终显示行号
set nu!

"编码设置
set enc=UTF-8

"禁止生成临时文件
set nobackup

"始终显示行号
set nu

"Tab键的宽度
set shiftwidth=4
set tabstop=4

"自动缩进
set ai!

"搜索忽略大小写
set ignorecase 

"配色方案
colorscheme evening

"智能补全
set completeopt=longest,menu

"去除gvim的菜单栏和工具栏
set go=


        五、总结
        以上就是最简单最经常使用的操作命令,它们仅仅是Vim命令当中的冰山一角;Vi最大的魅力体现在可以将命令组合起来一起使用,(宏命令?),大家有兴趣可自行研究。偶尔换换不同口味的工具也是蛮不错的,至少要比成天写单调的代码好得多。
        用下意识去输入命令,而不要在脑中过一遍再输入,两者的境界显然没可比性。
       
        本文就是用gVim7.3写出来的,全程没用过鼠标,感觉良好,无不良副作用,请大家放心使用。



猜你喜欢

转载自chirs1012f.iteye.com/blog/986197