欢迎来到天天文库
浏览记录
ID:9231182
大小:251.34 KB
页数:15页
时间:2018-04-24
《程序员的编辑器--vim》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、程序员的编辑器——VIM一、VIM的历史1976年左右BillJoy开发了vi,他也是伯克利大学的毕业生,后来他跟其他人一起成立了SunMicrosystems公司并成为了Sun的首席科学家。一开始Bill开发了ex,尔后开发了vi作为ex的visualinterface,也就是说vi允许一次能看到一屏的文本而非一行,vi也因此得名。“早期,当键盘和视频终端成为最新的计算机交互手段时,人们开发了VI。那时候的键盘不具有目前熟悉的全部功能键,所以,VI就设计成只需要打字机的键盘加上退出键就能完成对文本的输入和修改(现在有的还接受一些其他的键输入方式,如光标控制键)。尽管看起来受了限制
2、,不能充分利用现代键盘新增的许多键,可是‘祸中有福’,限制带来的好处是手指不离开打字区就能完成所有的编辑工作。”技术不断进步,需求也在不断提高,VI的各种变种也不断涌现,知名的有nvi,elvis,VIM,vile,yzis,其中移植性最好、特性最多、使用最广的当属VIM,VIM主要是BramMoolenaar开发的。最初Bram在Amiga计算机上改进一个叫Stevie的VI版本,他称之为“ViIMitation”。随着功能的逐渐丰富,VIM的含义也就改成了“ViIMproved”。相比原始的VI,VIM增加的一项最重要的功能便是多级撤销,VI只支持一级撤销。[separator
3、]二、VI/VIM基础知识很多人应该都知道VI是个有模式的编辑器:编辑模式和命令模式,按ESC回到命令模式,用i或者a进入编辑模式,由于区分了模式,导致VI的命令非常简洁,而无模式编辑器比如Emacs,所有的命令都需要加上控制键Ctrl或Alt。VI继承了ed的理念,另外也有历史原因,VI追求的是快捷——启动程序迅速,编辑文本高效,功能专注,而Emacs追求的是功能的丰富强大以及集成带来的方便。在VIM里头:helpmode可以看到VIM的所有模式,主要有如下几种:Normalmode即通常所谓的命令模式,在此模式使用a、i、A、I、o、O等进入InsertmodeInsert
4、mode即通常所谓的编辑模式,在此模式使用ESC进入Normalmode或者Ctrl-o临时进入Normalmode。Command-linemode命令行模式,在Normalmode下按冒号进入,按ESC取消执行命令或者回车执行命令,然后回到Normalmode。(VisualStudio.Net也添加了命令行脚本功能,幸甚)Visualmode即选择模式(注意跟用鼠标选择不同),用v,V,C-v或C-q进入Selectmode鼠标选择Replacemode在Normalmode下按R进入,按ESC返回Normalmode,相当于Windows下命令行中按Insert键进
5、入的覆盖模式从VI/VIM中退出:按ESC确认返回到Normalmode,然后:wq保存并退出:q!不保存并退出退出,如果文件更改则保存ZZ退出,如果文件更改则保存(按住Shift,再按两次z)VI的命令是非常具有美感的,下面是几个例子:i在光标前插入I在行首插入a在光标后插入A在行末插入o在下一行插入O在上一行插入x删除当前字符X删除前一个字符类似的还有b,B,ge,gE,w,W,e,E,f,F,t,T,这些命令都可以用:helpcmdname查到帮助。dd删除一行yy拷贝一行hjkl左下上右移动光标Ctrl-wh,Ctrl-wj,Ctrl-wk,Ctrl-
6、wl切换到左下上右窗口类似ed,VI/VIM的命令大多都可以带一个数字前缀或者一个数字范围,比如:5dd从当前行开始删除5行5yy从当前行开始拷贝5行1,3d删除1至3行1,3y拷贝1至3行(.代表当前行,$代表最后一行)d,y,c,v分别代表删除/拷贝/修改/选择命令指定的范围,比如intmain(void){„„;}将光标放在{处,然后输入v%就可以把大括号中内容选定,然后按=就可以按照C语言格式缩排(:help=可以看到=命令的描述),%命令的作用是跳到匹配处,比如括号之间,C的宏指令#i
7、f#else#endif之间。intsome_ugly_modifierandsome_ugly_name(void)如果光标放在第一个s上,想删除到“(”为止,则输入dt(就可以了,t(的作用是跳到下一个“(“前。dG可以从当前位置一直删除到文件末尾,因为G的作用是跳到文件最后一行。VIM的命令可以非常快捷的做到一些复杂的编辑操作。命令解释如下:%全文(“%”是“1,$”范围的缩写)s替换/搜索字符串开始(左括号)开始记录匹配d+一个或多个数字)
此文档下载收益归作者所有