您好,欢迎访问三七文档
gvim使用技巧作者:未知时间:2005-09-1322:58出处:Blog.ChinaUnix.net责编:chinaitpower摘要:gvim使用技巧本来想要写什么大全的,但想了想,感觉写大全也就是抄来抄去的,没什么意义,所以我决定就写实用技巧,下面我会一条一条的罗列,如果你还发现了这上面没有的技巧,可以联系我,把你的技巧给加上去,其实vim的使用与emacs的使用是一样的广泛,但大家都倾向于使用其中的一个而贬低另外的一个,互不相让,就好像一家人里面还要分出两个派别来,这又何苦呢?我只使用过vim,多于emacs我只是稍微尝试了一下,只能说emacs不适合于我,但我不反对别人使用它。好了,废话不说了,下面我将技巧罗列出来:注意:凡是从其他文章中摘录下来的我都会注明出处,为注明的即位本人自己所写1:在VIM当中要对所编辑的文件进行简单加密2:重复输入同一字符3:在文件中置入行号4:将文件名插入文件中5:用VIM编写C/C++程序6:自动补齐7:对一段文字进行排序1:在VIM当中要对所编辑的文件进行简单加密在VIM当中对所编辑的文件进行简单加密,可以在命令行模式下键入“:X”,然后在提示“Entertheencryptkey”时输入口令字串就可以加密了。但是不要忘了保存!保存的时候会发现在屏幕底部有“[crypted]”这样的字样。下次打开该加密文件会要求您输入口令字串。2:重复输入同一字符有时,我们可能想多次输入同一字符,VIM的插入功能可以很好的完成这项工作命令80i=^ESC一次可以输入80个字符=,当然,80a=^ESC也可以完成上述功能。请注意:此处的^ESC表示键盘左上方上的ESC键。3:在文件中置入行号工作中,我们有时希望把行号置入文件中,而VIM提供的功能:setnu只能显示行号,不能编辑或将其置入文件当中,下面的宏命令脚本row_num.vim可以完成此项功能。:%s/^/^I/每一行的行首添加一个TAB字符:$到文件的末行:letend=line(.)末行的行号==〉变量END,函数line的功能是取得指定行的行号,此处参数.表示当前行:1到文件的首行------------------------------------------:letnum=11==〉计数器:whilenum=end:letline=getline(.)取当前行的内容==〉变量LINE:letline=substitute(line,$,num,)在变量LINE的前面置入行号:callsetline(.,line)将变量LINE的内容写回当前行:+下移一行:letnum=num+1计数器加一:endwhile循环执行,直到文件结束------------------------------------------4:将文件名插入文件中在编辑状态下,使用Ctrl+R%来输入你正在编辑的文件名。5:用VIM编写C/C++程序Vi是Unix下最常用的文本编辑器。VIM(ViIMproved)则是它的增强版。有人常常拿VIM和emacs比较,VIM尽管不象emacs那样有那么多的功能,但是比emacs更方便、好用。用过emacs的人肯定会为emacs的一些快捷键感到烦恼,有时候用真希望自己有八只手。VIM的学习曲线也不象emacs那么长,只要看看VIM自带的vitutor,大约只要20分钟就能掌握VIM的用法。对于Unix下的C/C++的程序员,我推荐你们使用VIM+Ctags的组合来写程序。其中原因听我慢慢道来。(下面对VIM的介绍主要是针对5.6以后的版本)VIM支持语法制导和自动缩进VIM会根据文件的后缀名,如:*.c、*.cpp、*.cc,等,自动设置语法制导(SyntaxHighlighting)。C/C++中的一些保留字,如:if、for、include,等等,就会有不同的颜色,这样就会减少程序员犯错的可能,阅读程序的时候相对来说也轻松很多。用下面这些命令在VIM中查看有关语法制导的帮助:“:hsyntax”、“:hsyn-qstart”、“:hsyntax-printing”。VIM也支持根据GNU的风格自动缩进,这样程序员编写出来的代码就更易阅读,而且也有利于培养好的编程风格。用下面这些命令在VIM中查看有关自动缩进的帮助:“:hcindent”、“:hcinoptions”、“:hcinoptions-values”、“:hcinkeys”、“:hcinwords”。使用CtagsVIM中已经带了Ctags这个程序。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。Ctags可以帮助程序员很容易地浏览源代码。用下面的命令可以在源代码的根目录下创建“tags”文件:[/home/brimmer/src]$ctags-R“-R”表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。“tags”文件中包括这些对象的列表:l用#define定义的宏l枚举型变量的值l函数的定义、原型和声明l名字空间(namespace)l类型定义(typedefs)l变量(包括定义和声明)l类(class)、结构(struct)、枚举类型(enum)和联合(union)l类、结构和联合中成员变量或函数VIM用这个“tags”文件来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:1)用命令行。在运行vim的时候加上“-t”参数,例如:[/home/brimmer/src]$vim-tfoo_bar这个命令将打开定义“foo_bar”(变量或函数或其它)的文件,并把光标定位到这一行。2)在vim编辑器内用“:ta”命令,例如::tafoo_bar3)最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl-]”。用“Ctrl-o”退回原来的地方。注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:settags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。快速改正错误在VIM编辑器的环境下用“:make”就可以编译程序,当然其前提是在当前目录下有Makefile文件。运行完“:make”之后,如果程序中有错误,就会显示出来。这时候,光标会自动指向第一个出现错误的地方,而且你还可以看到错误的提示。然后,你就可以改正错误,而不用手工找到出错的那一行。记住下面几个有用的命令:l“:cl”列出错误l“:cn”让光标指向下一个错误l“:cp”让光标指向上一个错误l“:cnew”从头开始你甚至可以让VIM识别出其它编译器而不是gcc的错误提示。这对一些开发嵌入式系统的程序员这很有用,因为他们很可能用的不是gcc而是其它编译器。通过设置“errorformat”的值,可以让VIM识别出编译器的出错提示。因为不同的编译器的出错提示是不同的,所以如果用的不是gcc就要重新设置。“errorformat”的值是一个字符串,它的格式和C语言的scanf的字符串格式相识。gcc的“errorformat”的值为:%f:%l:%m。其中“%f”表示文件名,“%l”表示行号,“%m”表示出错信息。用“:herrorformat”查看详细的帮助信息。用“:hquickfix”、“:hmake”、“:hmakeprg”、“:herrorfile”查看其它的信息。有用的快捷键下面的这些快捷键对程序员很有帮助:在函数中移动光标[[转到上一个位于第一列的“{”]]转到下一个位于第一列的“{”{转到上一个空行}转到下一个空行gd转到当前光标所指的局部变量的定义*转到当前光标所指的单词下一次出现的地方#转到当前光标所指的单词上一次出现的地方括号的匹配%用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。其它VIM的配置文件是“.vimrc”,用这个文件可以配置VIM。VIM的图形界面的版本叫gvim。VIM也有用于Windows平台的版本。版权说明这个技巧的版权属于作者brimmer(brimmer@linuxaid.com.cn)和。6:自动补齐这个技巧在你写程序是十分的有用,在编辑状态下使用Ctrl+N就可以了,当然你要先输入前面的一小部分,如果不是你可以重复使用Ctrl+N来选择正确的匹配,当你的程序变量十分长时,该命令就显得很有用出了。7:对一段文字进行排序例如,有下面一段文字version.opch.ogetopt.outil.ogetopt1.oinp.opatch.obackupfile.o你想要对他们进行排序,按照字母顺序通过以下几部可以做到:a:移动光标到想要排序的那一行b:使用ma标志改行为ac:移动光标到想要排序的最后一行d:使用指令!'asort,来完成排序(注意这些步骤都是在非输入模式下进行的。)下面解释一下各个的用途。!表示将要执行指令,'a表示从当前行道标志为a的行,'sort'是执行的指令。不能不会的东西--------VI/VIM转自Forecho的blog2007-11-2915:54一、VIM的历史1976年左右BillJoy开发了vi,他也是伯克利大学的毕业生,后来他跟其他人一起成立了SunMicrosystems公司并成为了Sun的首席科学家。一开始Bill开发了ex,尔后开发了vi作为ex的visualinterface,也就是说vi允许一次能看到一屏的文本而非一行,vi也因此得名。“早期,当键盘和视频终端成为最新的计算机交互手段时,人们开发了VI。那时候的键盘不具有目前熟悉的全部功能键,所以,VI就设计成只需要打字机的键盘加上退出键就能完成对文本的输入和修改(现在有的还接受一些其他的键输入方式,如光标控制键)。尽管看起来受了限制,不能充分利用现代键盘新增的许多键,可是‘祸中有福’,限制带来的好处是手指不离开打字区就能完成所有的编辑工作。”技术不断进步,需求也在不断提高,VI的各种变种也不断涌现,知名的有nvi,elvis,VIM,vile,yzis,其中移植性最好、特性最多、使用最广的当属VIM,VIM主要是BramMoolenaar开发的。最初Bram在Amiga计算机上改进一个叫Stevie的VI版本,他称之为“ViIMitation”。随着功能的逐渐丰富,VIM的含义也就改成了“ViIMproved”。相比原始的VI,VIM增加的一项最重要的功能便是多级撤销,VI只支持一级撤销。[separator]二、VI/VIM基础知识很多人应该都知道VI是个有模式的编辑器:编辑模式和命令模式,按ESC回到命令模式,用i或者a进入编辑模式,由于区分了模式,导致VI的命令非常简洁,而无模式编辑器比如Emacs,所有的命令都需要加上控制键Ctrl或Alt。VI继承了ed的理念,另外也有历史原因,VI追求的是快捷——启动程序迅速,编辑文本高效,功能专注,而Emacs追求的是功能的丰富强大以及集成带来的方便。在VIM里头:helpmode可以看到VIM的所有模式,主要有如下几种:Normalmode即通常所谓的命令模式,在此模式使用a、i、A、I、o、O等进入InsertmodeInsertmode即通常所谓的编辑模式,在此模式使用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键进入的覆盖模式从VI/VIM中退出:按ESC确认返回到Normalmode,然后:wq保存并退出:q!不保存并退出:x退出,
本文标题:gvim-使用技巧
链接地址:https://www.777doc.com/doc-1850647 .html