VIM VI终极教程 (第四版)_第1页
VIM VI终极教程 (第四版)_第2页
VIM VI终极教程 (第四版)_第3页
VIM VI终极教程 (第四版)_第4页
VIM VI终极教程 (第四版)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VI/VIM终极教程第四版VimViVi普遍被ViEmacs1999EmacsLinuxworld20002Vim赢得了SlashdotBeanieEmacsVimEmacs同样都是非常优秀的文本编辑器。目录简介发展历史学习方法高效的读代码版本信息EmacsVim展开简介发展历史学习方法高效的读代码版本信息EmacsVim展开简介Vim是从vi别丰富,在程序员中被广泛使用。和EmacsUnix[1]使用vim先知道其设计理念是很重要的,有助于记忆,举一反三;1.vim的设计理念是组合;:Vimvim的设计理念是命"dd"含义是删除,"j"键代表移动到下一行,组合后"dj"删除当前行和下一行。另外还可以指定命令重复次(两次故组合后含义是删除到光标开始到行首间的内容(不包含光标);"d$"$"代表行尾,删除到行尾的内容(包含光标);用/模式间的组合:在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按"a"(append/追加)键或者"i"(insert/插入)键。,;^$w等vim;写代码的时候手需要时刻保持在键盘上,随机定位代码、随机删除代码、移动代码、插入代;顺序写、设置字体格式、翻页读多于随机写删除操作,且每个动作之间本身就有很多的停顿,UI)VIM高效vim进行操作只会徒增你的:vim,C,java入门50)发展历史BramMoolenaar在80Amiga上还没有他最常用的编辑viBram从一个开源的vi复制Stevie开始,开发了Vim的1.0版本。最初的目标只是完全复制viVimVi模拟1991年Vim1.14版被"FredFishDisk#591"这个Amiga用的免费软体集所收录了。1992年1.22版本的m被移植到了X和Sm的全名就变成i(改良)了。在这之后,Vim加入了不计其数的新功能。做为第一个里程碑的是1994年的3.0版本加入了多视窗编辑模式(分割视窗。从那之后,同一荧幕可以显示的Vim编辑文件数可以1996年发布的Vim4.01998年5.0版本的Vim加入了highlight(语法高亮)2001年的Vim6.0版本加入了代码折叠、2006年5月发布的Vim7.0版更加入了拼字检查、上下文相关补完,标签页编辑等新功能。2008年8月发布的Vim7.2,该版本合并了vim7.120100815,vim7.3主要功能vi多缓冲编辑任意个数的分割窗口(横,竖)具备列表和字典功能的脚本语言可以在脚本中调用Perl,Ruby,Python,Tcl,MzScheme,C,C++单词缩写功能动态单词补完对应400种以上文本文件的语法高亮C/C++,Perl,Java,Ruby,Python40种以上语言的自动缩排ctags的标签中跳转崩溃后文件恢复光标位置和打开的缓冲状态的保存复原(session功能)可以对两个文件进行差分,同步功能的diff模式远程文件编辑。[1]学习方法Vimvimvi已经改良了不少,但是初次使用还是会vim2vim且vim(完成大部分的编辑工vim有过百条命令对应编辑vimvim用在日常的文本编辑中vim技能就上升一级。其实,Vim与其它编辑器一个很大的区别在于,它可以完成复杂的编辑与格式化功能.在这些领域还少有软件能与它分庭抗礼,但是,与所有的灵活性的代价一样,你需要用自己的双手来实现它.这在事实上造成了用户在使用Vim过程中的几个自然阶段.notepad,word,edit,,Vim的使用对你,.对三种工作模式的不解甚至使你认为它是一个充满BUG.事实上,这些起初看起来古怪的特性是Vim(或者是的作者和它的用户们在自己漫长的文字编辑和程序设计生涯中总结出来的最快速最实在的操作,在几乎等于计算机本身历史的成长期中,,无用的特性或糟糕的设计在Vim用户.Vim.第二个阶段你开始熟悉一些基本的操作,这些操作足以应付你日常的工作,你使用这些操作.但这些阶段你仍然很少去碰Vim.notepad,edit.第三个阶段,,冗长而乏味,有没有更好的办法.于是,UNIX,,:helpxxx的大门.开始.,实用性.不过这却是你拥有魔力的第一步.接下来,你开始认识到这些咒语背后的真经,开始偷偷修改一些奇怪的符号,于是,奇迹产生了,魔力不但仍然有效,而且真实地作用于你..但这个过程并非是达到某个临界状态后的一路坦途,,,看似MissionImpossible的任务.这是你使用Vim的最后一个阶段,..开始以敲入i18n来输入internationalization,开始让Vim替你纠正经常把the误teh,Vim,开始写越来越长的script,.Vim完成高效的编辑而高度紧张.你开始在Vim邮件列表里提一些确实是问题的问题.也开始发现你在VimSHELL.事实上你已经成了一个无可救药的Vim骨灰级玩家.,高效率移动1、在插入模式之外VIM“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但VIM的强大之处在于他的命令模式!你会发现,在你越来越了解VIM间使用插入模式了。2、使用h、j、k、l使用VIMVIM,你就不用频繁的在箭头hj、l你就会发现这样操作的高效之处了。在你编辑你的电子邮件或者其他有段落的文本时VIM看来是一个大的长长的行。这时你可以在按h、j、k或者l之前键入一个g,这样VIM就会按屏幕上面的行如你所愿的移动了。3、在当前行里面有效的移动光标很多编辑器只提供了简单的命令来控制光标的移动(/尾等VIM则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)“”,这里的命令也被称作是motion(简单说明一下,后面会用到这个重要的概念)4、常用到的一些命令(motion)fxx;来重复你的上一个f命令。tx:和上面的命令类似,但是是移动到x的左边一个位置。(这真的很有用)Fx:和fx类似,不过是往回找。使用,来重复上一个F:和tx类似,不过是往回移动到x的右边一个位置。b:光标往前移动一个词。w:光标往后移动一个词。0:移动光标到当前行首(是数字^:移动光标到当前行的第一个字母位置。$:移动光标到行尾。):移动光标到下一个句子。(5、在整个文件里面有效移动光标VIM有很多命令,可以用来到达文件里面你想到达的地方。下面是一些在文件里面移动的命令:<Ctrl-f>:向下移动一屏。<Ctrl-u>:向上移动半屏。[2]G:到文件尾:移动光标到指定的行(比如G就是到第0行)gg:到文件首H:移动光标到屏幕上面ML:移动光标到屏幕下面*:读取光标处的字符串,并且移动光标到它再次出现的地方。#:和上面的类似,但是是往反方向寻找。:从当前光标处开始搜索字符串,并且到达text出现的地方。必须使用回车来开n移动到下个text移动到上一个text处。?text:和上面类似,但是是反方向。a-z你看不见书签的存在,但它确实已经在那里了。`a:到书签a处。注意这个不是单引号,它一般位于大部分键盘的1的左边。`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。[]{}()然后通过%高效的输入1、使用关键词自动完成VIM有一个非常漂亮的关键词自动完成系统。这表示,你可以输入一个长词的一部分,然后按一下某个键,然后VIM为iAmALongAndAwkwardVarName在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。使用关键词自动完成功能,你只需要输入开始几个字母(比如,然后按(按住Ctrl,再按N)或者。如果VIM没有给出你想要的词,继续按,直到你满意为止,VIM会一直循环它找到的匹配的字符串。2、聪明的进入插入模式很多新手进入插入模式都只是用i。这样当然可以进入插入模式,但通常不是那么合适,因为VIM提供了很多进入插入模式的命令。下面是最常用的一些:i:在当前字符的左边插入I:在当前行首插入a:在当前字符的右边插入A:在当前行尾插入o:在当前行下面插入一个新行Oc{motion}:删除motiont(但不包括,然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。d{motion}:和上面差不多,但是不进入插入模式。3、有效的移动大段的文本使用可视选择(visualselections)和合适的选择模式不像最初的VI,VIM允许你高亮(选择)模式:v:按字符选择。经常使用的模式,所以亲自尝试一下它。V<C-V>:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。(wVjj将会高亮当前行以及下面两行。4、在可视选择模式下剪切和拷贝一旦你高亮了选区,你或许想进行一些操作:d:剪贴选择的内容到剪贴板。y:拷贝选择的内容到剪贴板。c在非可视选择模式下剪切和拷贝会节省时间:d{motion}:剪切motiondw会剪切一个词而dfS会将从当前光标到下一个S之间的字符剪切至剪贴板。y{motion}:和上面类似,不过是拷贝。c{motion}:和d{motion}类似,不过最后进入插入模式。dd:剪切当前行。yy:拷贝当前行。ccD:剪切从光标位置到行尾到剪贴板。Y:拷贝当前行。C:和D类似,最后进入插入模式。x:剪切当前字符到剪贴板。sx5、粘贴粘贴很简单,按p。6、使用多重剪贴板很多编辑器都只提供了一个剪贴板。VIM有很多。剪贴板在VIM里面被称为寄存器”。最好使用VIM占用了。使用寄存器的命令为双引号“。比如:我们要拷贝当前行到寄存器k。你应该按“kyy(你也可以使用V”ky。为什么这样也可以呢?)现在当前行应该已经存在了寄存器k器k“kp来粘贴寄存器k里面的内容到你想要的位置。7、避免重复令人惊奇的.命令在VI.(小数点符号“dw”(删除一个词,I将会接着再删除一个词。8、使用数字使用数字也是VIM强大的而且很节省时间的重要特性之一。在很多VIM的命令之前都可以使用一个数字,这个数字将会告诉VIM这个命令需要执行几次。比如:3j将会把光标向下移动三行。10dd将会删除十行。y3t″将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。数字是扩展motion命令作用域非常有效的方法。高效的读代码建议在vim上安装Taglist+cscope+ctags插件有利于高效读代码,有利于学习![3]1、安装对于小编我来说我使用的是Ubuntu,安装软件一般使用的命令是apt-getinstall***!对于vim+Taglist+cscope+ctags组合编辑器的创建,vim,cscope,ctags安装起来比较方便使用上述命令即可安装!(对于不同的LinuxFedorayum命令安装)对于Taglist使用这个方法安装不了,我们需要先下载,然后安装完成:首先上网下载Taglist插件,下载完成后解压,再将文件下的taglist.vim使用cp命令拷贝到HOME/.vim/plugin文件夹下(cp-rtaglist.vim~/.vim/plugin)2、vim的配置vim是一个非常好用的编辑工具,以下介绍几个常用的底行模式命令:(1).设置缩进:setsmartindent//设置缩进:setsmartindentshiftwidth=4//C语言自动缩进,缩进值为4个字符宽度(2).显示光标行列信息:setruler//显示光标信息(右下角)(3).查看制表符:setlist//显示制表符,以^符号显示制表符的位置(4).查看行数信息:setnumber//显示行号(左边)(5).关键字高亮:syntaxon//关键字高亮(6).多文件编辑,在编写程序时有可能需要同时编辑多个文件,在这种情况下,需要如下设置:splittwo.c//多文件编辑当然,如果不嫌麻烦,可以在每次打开Vim时输入如上命令,如我经常用的是:setnumber:setruler:syntaxon:setsmartindent命令,如果将平时在底行模式下输入的命令直接写入配置文件,则以后使用Vim时不用再次输入这些命令。首先,试着在Vi的底行模式下输入如下命令,如果不支持的话,去下载一个Vim的全版本,sudoapt-getinstall。以(1).找到Vimrc文件。查看文件的权限:ls-lvimrcshisir@shisir-desktop:/usr/share/vim$cd/etc/vimshisir@shisir-desktop:/etc/vim$lsgvimrcvimrcvimrc.tinyshisir@shisir-desktop:/etc/vim$ls-lvimrc-r--r--r--1rootroot24922009-04-1008:08vimrc如果没有写权限的话,修改权限,使我们可以修改该配置文件sudochmoda+wvimrc根据个人需要将上述命令写入配置文件比如,我个人的设置是:syntaxon,setruler,setnumber,setsmartindentshiftwidth=4vimrc"显示行号setnumber"filetypeon"sethistory=1000"自动对齐setautoindentsetcindent"setsmartindent"tab4个空格settabstop=4"4setshiftwidth=4"设置匹配模式,输入左括号会出现右括号setshowmatch"编辑时显示光标状态setruler"快速匹配setincsearch"ifhas("vms")setnobackupelsesetbackupendif"""""""""""""设置开启ctags"""""""""""""ctags-Rsetautochdir"""""""""""""""""Taglist设置"""""""""""""""""""letTlist_Auto_Open=1letTlist_Ctags_Cmd='/usr/bin/ctags'letTlist_Show_One_File=1letTlist_Exit_OnlyWindow=1""""""""""""""""""""""cscope""""""""""""""""""setcscopequickfix=s-,c-,d-,i-,t-,e-ifhas("cscope")setcsprg=/usr/bin/cscopesetcsto=1setcstsetnocsverb"addanydatabaseincurrentdirectoryiffilereadable("cscope.out")csaddcscope.outendifsetcsverbendif因为我的文档中的原配置文件已经有了语法高亮:"Vim5andlaterversionssupportsyntaxhighlighting.Uncommentingthenext"lineenablessyntaxhighlightingbydefault.ifhas("syntax")syntaxonendif所以我就没写了,您如果vimrc文件里面没有此项建议自己加上syntaxon设置语法高亮PS:在配置文件中"符号后的内容是注释,而且在配置文件中是不需要添加符号的,这里关于cscope、ctags和Taglist的设置可以先写上,后面将对这三个插件有介绍。好了,现在去开一个Vim,编辑一个程序看看,是不是感觉很不一般呢?好了,下面顺便演示下,智能补全的用法,我分四种情况:1、前面申明过的变量或者函数名的补全;2、结构体等自建结构的补全;3、STL等标准库的补全;4、括号、引号等自动匹配补全。对于第一种情况,写程序的过程中,直接用CTRL+p明了结构体T,想在输入3、Taglist插件的使用TagList插件,是一款基于在vim如上图所示)显示当前的vim插件.在Vim中加载代码文件后,可以使用以下命令控制taglist:TlistOpen打开并将输入焦点至于标签列表窗口,效果如上图所示:TlistClose关闭标签列表窗口:TlistToggle切换标签列表窗口状态(打开←→关闭),标签列表窗口是否获得焦点取决于其他配置ctl-w+w或ctl-w+方向键窗口切换(taglist本质上是一个vim分隔窗口,因此可以使用ctl-w在Taglist窗口主要有以下操作按F1:打开帮助回车键:跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)o:新建一个窗口,跳到标记定义处p:预览标记定义(仍然在taglist窗口)空格:显示标记的原型(如函数原型)u:taglistu)s:()d:taglist文件vif1.c,f2.cf1.c)x:ntaglist窗口+:展开(指标记)-:折叠*:全部展开=:全部折叠[[:将光标移到前一个文件的起点]]:将光标移到后一个文件的起点q:退出taglist窗口F1:关闭帮助4、ctags插件的使用VIMVIMvitutor20VIM,vim的用法。但是对于LinuxC/C++的程序员,使用VIM+Ctags的^_^尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。熟练的使用s仅需记住下面七条命令(很简单吧,呵呵)$ctags–R*($LinuxShell)$vi–ttagtag):ts(ts助记字:tagslistVI):tp(tp此命令不常用,可以不用记:tn(tn助记字:tagsnext此命令不常用,可以不用记Ctrl+]跳到光标所在函数或者结构体的定义处Ctrl+T返回查找或跳转下面我们逐条的解释上面的命令:“$ctags–R(当前目录“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vitagsTags文件中包括这些对象的列表:用#define定义的宏枚举型变量的值函数的定义、原型和声明名字空间(namespace)类型定义(typedefs)变量(包括定义和声明)类、结构、枚举类型)和联合)类、结构和联合中成员变量或函数VIM用这个“tags”文件来定位上面这些做了标记的对象。剩下的命令就是定位这些对象的方法:“$vi–ttag”:在运行vim的时候加上“-t”参数,例如:[/usr/src]$vim-tmain变量或函数或其它)的文件,并把光标定位到这一行。如果这个变量或函数有多处定义,在VI命令就能列出一个列表供用户选择。tp”tagtag标记文件。当然,若当前tags文件中用户所查找的变量或函数名只有一命令不可用。(“Ctrl+]”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用“Ctrl+T”可以退回原来的地方。即使用户使用了N次“Ctrl+]”N个变量,按N次“Ctrl+t”也能回到最初打开的文件,它^_^vim“tags”文件所在的目录下运行。否则,运行vim的时候还要用文件的路径,这样vims文件(。5、cscope插件的使用e是一个类似s的工具。你可以把它想作是超过频的强大很多。在Vim里,通过cscope一样在函数等等之间便捷的跳转。VIMcscope“cscopecscope“cscopeVIM8cscope的查询功能,如下:例如,我work()findcwork”,回车后发现没有找到匹配的功能,可能并没有函数调用work()“:csfindswork”,查找这个符vimegrep程序的功能。cscopecscope.out文件vim命令行下执行:(vimrc中有这一步):csaddcscope.out在vim命令行下执行::cshelpcscopecommands:add:Addanewdatabase(Usage:addfile|dir[pre-path][flags])find:Queryforapattern(Usage:findc|d|e|f|g|i|s|tname)c:Findfunctionscallingthisfunction//查找调用本函数的函数d:Findfunctionscalledbythisfunction//查找本函数调用的函数e:Findthisegreppattern//查找egrep模式,相当于egrep功能,但查找速度快多了f:Findthisfile//查找并打开文件,类似vim的find功能g:Findthisdefinition//查找函数、宏、枚举等定义的位置,类似ctags的功能i:Findfiles#includingthisfile//查找包含本文件的文件s:FindthisCsymbol//查找C语言符号,即查找函数名、宏、枚举值等出现的地方t:Findassignmentsto//查找指定的字符串help:Showthismessage(Usage:help)VIM命令kill:Killaconnection(Usage:kill#)reset:Reinitallconnections(Usage:reset)show:Showconnections(Usage:show)cscopedo_fork函数的定义:vim:csfgdo_fork版本信息Emacs和Vim二款神一样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论