Vim学习笔记
2011-04-07 11:59 onm 阅读(251) 评论(0) 编辑 收藏 举报刚翻了一下以前留下的关于Vim的记录,发现最开始接触Vim是在2月7日左右,现在是4月7日。刚好两个月,很短。
Vim的学习曲线还是比较陡峭的,我现在依然很菜。如果有100个Level,那么我应该处在Level 1的级别,但是最近有那么一点点渐入佳境的感觉,整理一下两个月的收获。
第一次在博客上提及Vim是《最近的一些事情》上写道的,我说那时候情绪低落,无事想做,所以胡乱搞了点事情。其一是研究Vim,而另两件最后都没有成。
首先,我不想简介Vim是什么的了,如果你不知道,那么记住它是一个文本编辑器好了。前段时间看了本《学习vi和Vim编辑器》,对于一个我不了解的东西,我还是喜欢先找本书系统的看一下,当然看文档也是不错的。
好了,闲话少说,正文开始。(注:以下不明确区分Vi和Vim。)
首先要了解Vim和其它文本编辑器不同的一个地方,Vim分为几种模式,也可以理解为Context(上下文)。在不同模式下,相同的按键是代表不同含义,会产生不同操作的。
(为什么要这么搞,我个人感觉是Vim是不想让你的手指离开你的主键盘区,尽量减少指尖的移动距离,尽量不移动手臂。)
常用的模式有:普通(命令)模式(就是一进入Vim默认的模式),插入模式(输入模式),Ex模式(命令行模式),可视模式。
普通模式和插入模式
打开Vim的默认模式,如果切换到了其它模式,可以按ESC键切回到普通模式。在这个模式下,可以进行多样的命令操作。(个人感觉这里也是Vim的精华所在)
如果你习惯了,按上下左右方向键,那么Vim的光标移动方式是别样的。当然依然可以使用方向键,但是那样是低效的,因为那里远离你的主键盘区,你需要频繁移动手臂。Vim的上下左右分别是kjhl键,j可以看成向下箭头的形状,而h和l分别在最左和最右。这四个按键恰好在主键盘区的基本按键附近。掌握熟练以后移动光标非常方便。(Vim还提供了大量丰富的大范围移动命令,稍后会涉及一些)
在可以移动光标后,我们可以做一些基本的编辑操作了。比如添加,删除,替换,复制和粘贴。
对于添加操作就需要切换到插入模式了,进入的最基本的方法是在普通模式中通过敲击i键(注意,Vim里的命令是区分大小写的),这样就进入了插入模式。然后,就可以像其它文本编辑器一样输入字符了。进入插入模式Vim还提供了大量方法,它们在一些细节上有所不同,如I(行首插入),o(下行插入),O(上行插入),a(追加,光表后移一个字符插入)等。
对于删除,当然是可以通过在插入模式下通过Backspace或者Delete键来进行删除了,但是还是那个原因,你需要移动手臂,Vim提供了别样的方法。首先确保你在普通模式,通过使用x键删除一个字符,对于复杂一些的删除需要d键,这个可以有很多变化。(就像武侠小说中说的那样,可以演化出多少多少种变化- -)
规则是[number] d object或者d [number] object。其中: number代表执行命令的次数,默认为1,d 代表删除,object 代表命令所要操作的对象。number和d都很好理解,那么object是什么。举几个例,w代表单词,$掉表行末,0代表行首。它们可以理解为chunk(块),就是删除的单元。比如说在普通模式下输入2dw,这就代表从当前光标处开始,连续删除两个单词。d$代表删到行末。(其实w,$,0还有b,e等等都可以作为移动光标的命令)这里还存在一个快捷命令就是dd,代表删除当前整行。
对于替换其实与删除类似,单个字符是r,多个用c。
对于复制也是类似,使用y。
怎么粘贴呢,使用p,就把刚才复制或者删除到缓冲区的字符们粘贴到光标的后面了。
操作失误了怎么办,撤销操作是在普通模式下键入u,Vim支持重做,通过CTRL+R实现。
最后说一下非常好用、实用的搜索,输入/ 然后输入要搜索的内容,回车。这样就会自动匹配定位到最近的下一个位置上,可以通过n和N上下切换匹配。还可以设置高亮,是否忽略大小写什么的。
普通模式下还有非常丰富的内容,这里只是沧海之一粟。
Ex命令行模式
这个是通过在普通模式下输入一个:(冒号)进入。进入这个模式,其实就是在编辑器下方出现一个: 然后可以输入一些命令。
比如最基本的打开,保存,退出文件的命令。
这里要说一下Vim编辑文件的方式,Vim是最开将文件内容读取到缓冲区里,你一切的操作都是对这个缓冲区的内容进行操作。保存修改就是将缓冲区内容回写到文件里。
:q是未编辑打开文件时候退出用,如果文件已经改动通过:q!实现不保存退出。
:w保存,:x保存并退出(或者:wq)。
:e恢复文件到原始版本(该命令相当于重新读取文件内容到缓冲区。)
还可以通过命令行模式设置一些vim的参数,通过:set xxx实现,比如显示行号可以输入:set nu。(这个内容相当丰富,此处简略不提。)
在:(冒好)后面加一个!(叹号)可以进入外部模式。实现类似shell的功能。
可视模式
这个类似于用鼠标选择一段文本。并且还可以切换到列模式(或者说块模式),类似于支持块模式的鼠标文本选取。
可视模式还是挺好用的,降低了一些命令的难度,这里不做展开了。
其它
说完了4种模式,最后提一下Vim提供的多窗口支持。也可以说是切分窗口,个人感觉处理多个文件的时候还是非常好用。
这个也是通过命令行模式完成的,比如纵向切割窗口,:vs otherfile。这样就会将当前窗口一分为二,左边是你的otherfile,右边是原来的文件。还可以横向切割,:split otherfile实现。当然还可以继续切割。此外还有丰富的命令。
最后罗列一些命令,并附上命令的英文全称。
- cc 替换当前行
- C => c$
- ~ 更改大小写
- p (put)
- y (yank)
- u (undo)
- CTRL+R (redo)
- a (append)
- J (join) 合并两行
- . 重复上一次命令
- CTRL+F, CTRL+B 分别为向下(上)滚动一屏
- gg 移动到第一行
- G 移动到最后一行
- 132 CTRL+G 移动到132行
- zf 创建折叠
- :w (write)
- :q (quit)
- :vs (vertical split)
- :tabnew filename
- :tabp
Vim还有海量的插件,海量的配置选项。有的时候让我眼花缭乱,我也一直没弄太多这些东西,也许以后接触多了会深入研究一下。
Vim还很是深的,文必后感觉很多地方没有说好,写的过程也很是心虚,有太多想说,有限于自身能力以及篇幅和时间不能展开。Vim自带一个好用的入门教程,对于熟悉基本的概念和操作很不错。程序叫做vimtutor,可以在bash中输入vimtutor打开。