下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 最佳vim技巧

最佳vim技巧.pdf

最佳vim技巧

back
2013-08-11 0人阅读 举报 0 0 暂无简介

简介:本文档为《最佳vim技巧pdf》,可适用于IT/计算机领域

最佳vim技巧#信息来源wwwvimorg:官方站点compeditors:新闻组http:wwwnewriderscombooksoplebookshtml:Vim书籍http:vimdocsourceforgenetcgibinvimhtmlpl:关于vim的可查询文档http:vimdocsourceforgenetvimfaqhtml:VIMFAQ#基础*#g*g#:寻找光标处的狭义单词(<cword>)(前向后向):括号配对寻找{}()matchitvim:使得能够配对标记<tr><td><script><php等等<CN><CP>:插入模式下的单词自动完成<CX><CL>:行自动完成(超级有用)<CR><CW>:把狭义单词<cword>写到搜索命令行<CR><CA>:把广义单词<cWORD>写到搜索命令行:setignorecase:搜索时忽略大小写:syntaxon:在Perl,HTML,PHP等中进行语法着色:hregexp<CD>:按下controlD键即可得到包含有regexp的帮助主题的列表:(使用TAB可以实现帮助的自动补齐)#使更新vimrc更容易:nmap,s:source$VIMvimrc#译释:nmap是绑定一个在normal模式下的快捷键:nmap,v:e$VIMvimrc#译释:在normal模式下先后按下,s两个键执行vimrc而,v则是编辑vimrc#visual模式(例子是:轻松添加其他的HTMLTags):vmapsb"zdi<b><CR>z<b><ESC>:在visual模式下选中的文字前后分别加上<b>和<b>#译释:vmap是绑定一个在visual模式下的快捷键rn#译释:原理:在visual模式下#译释:原理:在visual模式下"zd把一个选中的区域命名为z然后删除#i进入插入模式输入<b><CR>z撤销刚才的删除,然后再写入<b>#最后<ESC>返回normal模式rn#译释:"z命令创建一个选中的区域为register并把它命名为zrn#译释:更令人开心的有:在visual模式下选中几行然后输入>,#则选中的行会全部缩进两个tab#,偶一开始还是用:xx,xxs^tt好傻啊!rn:vmapst"zdi<=<CR>z><ESC>:在visual模式下选中的文字前后分别加上<=和>#文件浏览:Ex:开启目录浏览器注意首字母E是大写的:Sex:在一个分割的窗口中开启目录浏览器:ls:显示当前buffer的情况:cd:进入父目录:args:显示目前打开的文件:lcd:p:h:更改到当前文件所在的目录#译释:lcd是紧紧改变当前窗口的工作路径是代表当前文件的文件名,#加上:p扩展成全名(就是带了路径)加上:h析取出路径rn:autocmdBufEnter*lcd:p:h:自动更改到当前文件所在的目录#译释:autocmd指定一个自动命令BufEnter指定一个事件*指定事件的对象#lcd:p:h指定一个动作#hehe,好像和写记叙文差不多#缓冲区(buffer)浏览器(第三方的一个最流行的脚本)#需要下载bufexplorervimhttp:wwwvimorgscriptphpscriptid=上就有be:在缓冲区浏览器中打开缓冲区列表bs:以分割窗口的形式打开缓冲区浏览器#大小写转换guu:行小写gUU:行大写g~~:行翻转(当然指大小写啦)#译释:g是大小写转换命令(greate)uU~是三种转换形式(小写大写翻转)#最后一个重复则表示该转换是对于一行而言的rnguw:字大写(狭义字)译注:建议对比iwgUw:字小写(狭义字)g~w:字翻转(狭义字)#译释:最后一个w表示该转换是对于一个字而言的由于是在normal模式下#所以这个w表示一个狭义字<cword>rnvEU:字大写(广义字)vE~:字翻转(广义字)#译释:vE这个指令组合会进入visual模式然后选择一个广义字<CWORD>rnggguG:把整个文章全部小写(ft!bt!)gf:取当前光标处的广义字作为文件名然后试图打开它!#译释:为什么是广义字呢?因为这样可以方便的取到路径啊像varwwwhtmlindexhtmrnga:显示光标处字符的ascii,hex,oct,晕菜的一堆转换ggVGg:用rot编码整个文件(晕!)#译释:gg到文件首行首字符V进入VisualLine模式G到文件末行首字符#这样就选中了整篇文章然后g就是用rot编码整个文件啦##【关于rot谁让英文是偶数个字母啊】#ROT是一种简单的编码它把字母分成前后两组每组个编码和解码#的算法相同仅仅交换字母的这两个部分即:am>nz和nz#>am。ROT用简易的手段使得信件不能直接被识别和阅#读也不会被搜索匹配程序用通常的方法直接找到。经常用于USENET中发表一#些攻击性或令人不快的言论或有简单保密需要的文章。#由于ROT是自逆算法所以解码和编码是同一个过程。rn<CA>,<CX>:增加,减少光标处的狭义字所表示的数字:(,仅仅是分割了这两个命令不是命令的一部分):Win的用户可能需要重新定义一下CtrlA呵呵#译注:goodguy,令人不得不想到perl的数字串rn<CR>=*:插入(这是一个迷你计算器耶!)#好玩的东东:h:也可以访问http:wwwgooglecomsearchq=:第一个结果就是NewsDouglasAdams:Floorextendsitsdeepestsympathiesto:thefamily,friends,andfansofDouglasAdams:hholygrail:h!#标记和移动':跳到最后修改的那一行(超级有用)(ft,怎么又是这个评价)`:不仅跳到最后修改的那一行还要定位到修改点<CO>:依次沿着你的跳转记录向回跳(从最近的一次开始)<CI>:依次沿着你的跳转记录向前跳:ju(mps):列出你跳转的足迹:helpjumpmotions:history:列出历史命令记录:hisc:命令行命令历史:hiss:搜索命令历史q:搜索命令历史的窗口q::命令行命令历史的窗口:<CF>:历史命令记录的窗口#缩写和键盘映射(原文中文件举例都用了c:aaax偶全给他改成pathfile了哼唧):map<f>:'a,'bw!pathfile#译释:map是映射一个normal模式下的键#这里是把F键映射成把标记a到标记b中间的内容另存为一个文件pathfile#标记(mark)的方法:把光标移动到需要标记的地方输入m然后输入标记名例如arn#引用标记的方法:'a即:单引号加标记名rn:map<f>:rpathfile#译释:把F键映射成在当前位置插入文件pathfile的内容:map<f>:w!pathfile<CR>#译释:(点号)表示当前行#所以F就是把当前行存为pathfile#最后的<CR>表示一个回车:map<f>:rpathfile<CR>:abphp:列出php表示的缩写#译释:定义一个缩写使用::iabhmhmisty#一个有趣的现象是它列出的会是php和它的前子串开头的缩写#例如有这么几个缩写:#h=>hmisty,hm=>hmisty,hmi=>hmisty,m=>hmisty#那么使用:abhm会显示这么几个缩写:hm和h#而不是你想象中的hm和hmirn:map,:列出以逗号开始的键盘映射#译释:一般而言我们称这些逗号开始的组合键为“逗号命令”#不过hmisty更喜欢用构成“分号命令”#而且不是用map,而是用imap#因为偶懒么懒得按<Esc>,所以直接在insert模式下就执行命令了#为什么用分号呢?因为我最常用它写程序啊#perlCCobjectpascaljava都是用分号结束一个语句#我们一般很少在分号后面连续写其他字符#所以用“分号+其他键”就很少会在输入的时候造成冲突rn#在键盘映射中常用的表示<CR>:回车<ESC>:Esc<LEADER>:转义符号<BAR>:管道符号|#列出寄存器(Registers):reg:显示所有当前的registers"p:"表示引用register表示一个名字叫做的register:p就是粘贴(paste)命令#译释:"也用来定义register#先输入",表示定义register#然后输入名字如~,a~z#然后执行删除或复制命令如dd或y#或者是visual模式下的d(删除选中的部分)或y(复制选中的部分)#则被删除或复制的部分就被存入了这个命名的register##观察:一个特殊的register,""里面存储了一个匿名的删除复制#在你执行dd或y的时候被作用的部分被存到了""中#这些和perl是多么像啊#Usefultrick"ayya:把当前行作为一个Vim命令来执行#译释:"ayy是定义当前行到registera然后a是执行registera中存储的指令#yy:复制一行#yy:复制从此向下的行rnyy":用上面所提到的那个匿名register#从其他程序获取输出(需要外部程序):r!lsexe:读取ls的输出到当前位置!!date:读取date的输出(但是会替换当前行的内容)#译释:其实你输入了!!后vim就自动转换到:!等待你继续输入rn#使用外部程序sort进行排序(sort是Unix标准命令ls,date也是):!sortu:使用sort程序排序整个文件(用结果重写文件)#译释:表示整个文件的所有行#!sort表示执行外部命令sort#u是sort的参数mansort看看这个参数的意义是合并相同的行#u就是unique,如果两行内容相同则结果中只保留一行的说rn:'a,'b!sortu:对marka到markb中间的内容进行排序!}sortu:排序当前段落(只能在normal模式下使用!!)#译释:!表示使用filter}表示filter的对象是从当前行开始向后数一段#段落指到空行处结束不包括空行#其实你一旦输入!}vim就自动计算当前段落应该到那一行(eg)然后生成#:,!等待之后输入sortu回车完成操作#表示当前行当然就是当前行向后数行#多文档操作(基础)#译注:用:ls!可以显示出当前所有的buffer:bn:跳转到下一个buffer:bp:跳转到上一个buffer:wn:存盘当前文件并跳转到下一个(又是“超级……”,ft!):wp:存盘当前文件并跳转到上一个:bd:把这个文件从buffer列表中做掉:bun:卸掉buffer(关闭这个buffer的窗口但是不把它从列表中做掉):baddfilec:把文件filec添加到buffer列表:b:跳到第个buffer:bmain:跳到一个名字中包含main的buffer,例如mainc:(ultra这个怎么翻译?:():savphphtml:把当前文件存为phphtml并打开phphtml:sav!<bak:换一个后缀保存:e!:返回到修改之前的文件(修改之后没有存盘):wpath:把文件存到一个地儿:e#:编辑标记为#的buffer(这个buffer必须含有一个可编辑的文件):用ls命令就能看到哪一个buffer有#:a表示当前正在编辑的buffer:u表示不能编辑或者已经被做掉的buffer:e#:编辑编号为的buffer(这个buffer必须含有一个可编辑的文件):rew:回到第一个可编辑的文件:brew:回到第一个buffer:spfredtxt:在一个水平分割的窗口中打开文件fredtxt#译注:vsfredtxt可以实现垂直分割:sball:把当前所有含有可编辑文件的buffer显示到一个分割窗口中:(偶该考虑把super翻译成高级指令了,ft):map<F>:ls<CR>:e#:在normal模式下按F键则会显示所有含有一个rn:可编辑文件的buffer然后提示你输入buffer的序号:输入后回车则编辑这个buffer#译注:这是一个键盘绑定rn:sethidden:允许不保存buffer而切换buffer(wo=without)#在分割窗口中快速切换:map<CJ><CW>j<CW>#译注:原文此处有误前面应该加上冒号#这是一个键盘绑定把CtrlJ定义成切换到下一个窗口并最大化:map<CK><CW>k<CW>#命令录制(最佳技巧ft)qq#录制到q#输入一系列复杂的指令q#再次按q停止录制q#执行q中存储的指令#重复执行#编辑register录制"ap#把registera中的内容贴到当前位置#现在你可以修改它了"add#删除之重新存入registeraa#执行registera中的指令#vimrc基础:setincsearch:实时匹配你输入的内容:setwildignore=*o,*obj,*bak,*exe:tab键的自动完成现在会忽略这些:setshiftwidth=:现在自动缩进将是个字符#译注:一个tab位通常是个字符#所以我们还要设定:settabstop=这样所有的缩进都是字符了#emacs默认就是字符缩进吧?:setvbtvb=":沉默方式(不要叫beep!)#加载windowsiexplorer来浏览(我想这只有在windows下用gvim才能用到):nmap,f:update<CR>:silent!startc:progra~intern~iexploreexefile::p#译释:nmap是做一个normal模式下的键盘绑定#这里绑定了一个逗号命令,f#:update是写这个文件与:w不同它只有当文件被修改了的时候才写#:silent别让弹出窗口报告执行结果#!后面就是执行windows命令了。呵呵去问billgates什么意思吧。#不过偶用gvim试过了好用!rn:nmap,i:update<CR>:!startc:progra~intern~iexploreexe<cWORD><CR>#用VIM编辑ftp文件:cmap,r:Nreadftp:publichtmlindexhtml:cmap,w:Nwriteftp:publichtmlindexhtml#译注:原文丢失了开头的冒号#cmap是命令(command)模式绑定rngvimftp:publichtmlindexhtml#这一句就是开始编辑一个ftp远端的文件ft#附加到一个register(就是用大写的register名字啦!)"ayy#复制行到a中j#下移行"Ayy#再添加行到a中I:显示光标处的狭义字可以匹配的行(高级指令)#译注:#可以全文查找与光标处的狭义字相匹配的字#这在查找函数原型和实现或者变量使用的时候很有用#常规缩进:'a,'b>>#译释:把marka到markb之间的内容进行两次缩进rn#在visual模式下缩进(无限可重复):vnoremap<<gv#译释::vnoremap重定义了visual模式下<符号的含义#把它定义成<gv#即:先<向外缩进然后gv重新选择上一次选择了的区域#这样在visual模式下就可以实现连续按<而连续缩进了:vnoremap>>gv#同里内缩#查找(译注:建议先学习正则表达式)#译注:查找命令不用进入:命令模式直接按就可以了#如果没有修饰可以不要右边的#和smthbbs差不多啦呵呵joee:光标停留在匹配单词最后一个字母处joee:光标停留在匹配单词最后一个字母的下一个字母处joes:光标停留在匹配单词第一个字母处^joe*fred*bill:ft,标准正则表达式^AJ:找一个以A~J中一个字母重复两次或以上开头的行forum()*pent:多行匹配freds*joei:中间可以有任何空白包括换行符n#译注:这个和perl不太一样的哦fred|joe:匹配FRED或JOE<fred>i:匹配fred,fred必须是一个独立的单词而不是子串#译注:这和perl也不太一样perl是用b做单词定界符的<dddd>:匹配个数字<d{}>:也是匹配个数字#在visual模式下查找:vmapgy<CR>"<CR>:匹配选中的高亮文字#译释:vmap是在visual模式下的键盘映射#映射了g这个命令组合#y把选中的高亮文字写入匿名register"#打开搜索模式#<CR>准备粘贴register#"粘贴了""中的内容#<CR>回车执行rn:vmap<silent>gy<CR>=escape(",'*$^~')<CR><CR>:withspecchars#译释:#$^*#*#$!rn#跨行匹配表示允许匹配换行符或者说允许匹配新行#译注:小心和perl不一样<!p{}>:匹配多行注释freds*joei:似乎上面有了ftbugs()*bunny:中间可以有无数东西:h:看看关于的帮助rn#查找当前光标位置所在子例程函数(subroutinefunction)的声明:nmapgxyiw^(sub<bar>function)s<CR>"<CR>#译释:nmap做一个normal模式下的键盘绑定#y进入复制状态后面需要一个motion#接着就用iw指出了这个motion,是innerword#innerword也是狭义字<cword>但是和w不同#w是从光标位置开始向后看#而innerword总是把光标移到第一个字母从而总能得到一个完整的狭义字#试一试gUw和gUiw就知道区别了呵呵。rn#在多个文档中搜索:bufdosearchstr:argdosearchstr#替换#译注:替换命令需要先进入:命令模式rn:sfredjoeigc:一个常见的替换命令修饰符igc和perl中一样意思:srg:删除DOS方式的回车^M:s=*$==:删除行尾空白:'a,'bgfredsdickjoeigc:非常有用!(ft,又来了!)#译释:'a,'b指定一个范围:marka~markb#g用一个正则表达式指出了进行操作的行必须可以被fred匹配#看后面g是一个全局显示命令#sdickjoeigc则对于这些满足条件的行进行替换rn#列复制#译注:#^#*^#$!:s=^$==:复制最后一列:s=f$==:一样的功能:s=S$=:ft,还是一样#反向引用或称记忆:s(*):(*)::颠倒用:分割的两个字段:s^(*)n$:删除重复行#非贪婪匹配{}:s^{}pdfnewpdf:只是删除第一个pdf#跨越可能的多行:s<!{}>:又是删除多行注释(咦?为什么要说“又”呢?):help{}:看看关于非贪婪数量符的帮助:sfred<cr>ag:替换fred成registera中的内容呵呵#写在一行里的复杂命令:sfgif>rrg|vgif$d|sgifjpg#译注:就是用|管道啦rn#或者:ssuck|buckloopygc:或者(或者需要ft!|不是或者)#ft,不就是转义了么!这个和perl真是不同了!rn#调用VIM函数:sdate=strftime("c"):插入时间串rn#处理列替换所有在第三列中的str:s:((ws){})str:str:rn#交换第一列和最后一列(共列):s:(w)(*s)(w)$::rn#filterallformelementsintopasteregister#把所有的form元素(就是html里面的form啦)放到register里?#ft,头疼不解释了:redir*|silexec'g#<(input|select|textarea|=form)>#p'|redirEND:nmap,z:redir*<Bar>silexecselecttextarea=fo">'g<(input<Bar>select<Bar>textarea<Bar>=fo#上面这一行不能完全显示最好CopyArticle下去看rn#全局(global)显示命令就是用:g+正则表达式#译释::g{pattern}{cmd}就是全局找到匹配的行#然后对这些行执行命令{cmd}:g<fred>:显示所有能够为单词fred所匹配的行:g<pattern>z#:显示内容还有行号呵呵:g<pattern>z#|echo"==========":漂亮的显示ft!rn#全局命令(其他):g^s*$d:删除所有空行:g!^ddd:删除不含字串'dd'的行:v^ddd:同上#译释:v==g!就是不匹配!:gfred,joed:notlinebased(verypowerfull):v,join:压缩空行:g^$,j:压缩空行:g<input|<formp:或者要用|:g^pu:把文中空行扩增一倍(pu=put):即:原来两行间有一个空行现在变成个:g^m:按行翻转文章(m=move):gfredt$:拷贝行从fred到文件末尾(EOF):normjdd:隔行删除#译释:指明是对所有行进行操作#norm指出后面是normal模式的指令#j是下移一行dd是删除行rn#incrementingnumbers:,$g^dexe"norm!<ca>":增加在BOL(beginningofline)处的数字#译注:,$指明命令从当前行执行到最后一行#如果没有,$限定范围那么g就会对整个文件进行操作#exe是执行后面的命令组合rn:,$g^dexe"norm<cp>":Win下必须重定义CtrlArn#保存全局命令的结果(注意必须使用添加模式):gfredyA:添加所有为fred所匹配的行到registera:'a,'bg^Errorw>>errorstxtrn#复制每一行然后在复制出来的每一行两侧加上一个print'复制出来的内容':gyank|put|s'"g|s*Print''#全局命令和替换命令联姻(强大的编辑能力):'a,'bgfredsjoesusangic:可以使用反向引用来匹配:gfred,joesfredjoegic:nonlinebased(ultra)#先找fred然后找joe然后#$^$^#$^^^*!:fredjoe,sidssallyalleygIC#重定向到register*和粘贴register*:redir*:重定向命令的输出结果(最下方命令行上的结果):到register*(ft,*代表~,a~z,):redirEND:结束重定向#处理粘贴"*yy:上面讲过了就是复制到register*中"*p:然后贴出来:redir>>outtxt:重定向到一个文件#重新格式化文本gq<CR>gqap(a是motionp是段落(visual模式))ggVGgq重新格式化整个文章#对多个文档实施命令:argdosfoobar:对所有:args列表中的文档执行命令:bufdosfoobar:windosfoobar:argdoexe'!sort'|w!:使用外部命令#命令行的一些好玩的东东gvimh:启动的时候启动帮助(Win)vih或vimh:这个是unix下用ls|gvim:编辑一个数据流!gvimofilefile:以分割窗口打开两个文件rn#指出打开之后执行的命令gvimexec"main"joec:打开joec然后跳转到'main'rn#对一个文件执行多个命令vimc"sABCDEFge|update"filecrn#对一组文件执行多个命令vimc"argdosABCDEFge|update"*crn#自动编辑文件(编辑命令序列Excommands已经包含在convertvim中了)vims"convertvim"filecrn#不要加载vimrc和任何plugins(启动一个干净的VIM)gvimuNONEUNONEN#GVIM不同的地方gvimdfilefile:vimdiff(比较不同)dp:把光标处的不同放到另一个文件do:在光标处从另一个文件取得不同#Vim陷阱#在vim的正则表达式中和|都必须加转义符#小心这和perl不一样!fred:匹配fred或freddy但是不匹配free#v或叫做verymagic(通常都是这么叫)可以取消转义符codes(n|s)*where:普通的正则表达式vcodes(n|s)*where:verymagic|不用加了!rn#把东西送到命令行搜索行(SUPER:偶不再翻译这种叹词了)<CR><CW>:送一个狭义词<CR><CA>:送一个广义词<CR>:送一个小型删除寄存器register<CR>az:送一个命名寄存器register<CR>:送文件名过去(#也行)#操作寄存器:leta=:清除registera:let*=a:寄存器赋值:map<f>"qyy:letq=q"zzz"#译注:猜猜这个无聊的绑定是什么意思?#关于帮助的帮助:hquickref:翻到VIMQuickReference页(有用!):htips:Vim自己的tips:hvisual<CD><tab>:得到一个关于visual关键字的帮助列表:然后用tab键去选择:hctrl<CD>:显示所有关于Ctrl的帮助:h:r::ex冒号命令:hCTRLR:普通模式命令:hr:r在正则表达式中是什么意思呢?:hiCTRLR:insert模式下的CtrlR:hcCTRLR:命令行(commandline)模式下的CtrlR:hvCTRLV:visual模式下的CtrlV:htutor:VIM指南gvimh:关于VIM命令的帮助vivimh<CS>T:ControlShiftTgobackwardsinhelp:偶不清楚有什么用:(#选项设置在哪里?:scriptnames:列出所有加载的plugins,vimrcs:verbosesethistory:显示history的值并指出设置文件的位置#制作你自己的VIM帮助:helptagsvimvimdoc:重建doc中所有的*txt帮助文件:helpaddlocalhelp#用外部程序来运行程序(例如perl:)map<f>:w<CR>:!perlc<CR>#译释::w<CR>写文件#:!perlc<CR>用perl来运行当前文件#当前文件必须有文件名!#插入DOS换行符:snubian<CV><CM>g:CtrlV是一种转义它说要解释<CM>:snubian<CQ><CM>g:对于Win应该这样:snubian^Mg:你看到的^M是一个字符:snubianrg:更好的形式#把最后一个命令贴到当前位置i<cr>:#把最后一个搜索指令贴到当前位置i<cr>#译释:i是进入insert模式#Ctrlr是开启插入模式下register的引用#:和分别引用了两个register的内容#更多的完成功能<CX><CF>:插入当前目录下的一个文件名到当前位置#在insert模式下使用#然后用CtrlPCtrlN翻页#替换一个visual区域#选择一个区域然后输入:sEmacsVim等等vim会自动进入:模式:'<,'>sEmacsVimg:前面的'<,'>是vim自动添加的#在文件中插入行号(不是显示行号是插入!):g^exec"s^"strpart(line("")"",,)#用VIM的方式来编号行:setnumber:显示行号:setnonu:取消显示:s^=strpart(line('')"",,ts)rn#从任意行开始编号(需要perl嘿嘿):'a,'b!perlpne'BEGIN{$a=}substr($,,)=$a'#似乎有点小问题你试试看:)rnqqmnYP`n^Aq:记录到q然后用q重复#似乎不能工作你试试看:)rn#递增已存在数字到文件末:,$g^dexe"normal!<ca>"rn#高级递增看:http:vimsourceforgenettipviewphptipid=#高级递增("真的很有用"ft)"把下面几句放到vimrc#vimrc脚本用"做行注释符letg:I=function!INC(increment)letg:I=g:Ia:incrementreturng:Iendfunction"例如从marka到markb递增从开始步长为:letI=:'a,'bs$=INC()"(原文:createamapforINC)"但是cab是清楚命令行缩写啊?怎么回事?cabviminc:letI=|'a,'bs$=INC()#加密(小心使用不要忘了密码)rn:X:然后vim会提示你输入密码:h:X#modeline(makeafilereadonlyetc)mustbeinfirstlastlines#不会用不翻了vim:noai:ts=:sw=:readonly::hmodeline#CreatingyourownGUIToolbarentry#对于text模式下的vim没用不翻了amenuModelineInsertaVIMmodeline<Esc><Esc>ggOvim:ff=unixts=ss=<CR>v#一个保存当前光标下的狭义字到一个文件的函数function!SaveWord()"这里用!是强制覆盖以前的定义normalyiwexe':!echo''>>wordtxt'endfunctionmap,p:callSaveWord()#使用该函数的一个例子#删除重复行的函数function!Del()ifgetline("")==getline(line(""))normddendifendfunctionrn:g^callDel()#使用该函数的一个例子#双字节编码(nonalphanumerics):digraphs:显示编码表:hdig:帮助i<CK>e':输入éi<CV>:输入é(Unix)i<CQ>:输入é(Win)ga:查看字符的hex值#文件名自动完成(例如maincc):emain<tab>:tab键完成gf:打开光标处广义字命名的文件(normal模式)main<CX><CF>:文件名自动完成(insert模式)#Vim复杂使用#交换两个单词:s<(on|off)>=strpart("offon",*("off"==submatch()),)g#把text文件转换成html文件(oh,ft):runtime!syntaxhtmlvim:转换txt成html:hhtml:看看帮助#VIM有一个内部自带的grep命令:grepsomekeyword*c:得到一个包含somekeyword的c文件名列表:cn:去下一个出现的位置#强制无后缀文件的语法着色方式pl:setsyntax=perl#取消语法着色:setsyntaxoff#改变色彩主题(在~vimvimcolors中的任何文件):colorschemeblue:setnoma(nonmodifiable):防止修改:setro(ReadOnly):只读保护#Sessions(打开一系列文件)gvimfilecfilecliblibhliblibh:在"session"中加载一系列文件:mksession:生成一个Session文件(默认是Sessionvim):qgvimSSessionvi

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/15

最佳vim技巧

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利