Vim-推荐插件

来源:互联网 发布:北京java一年工资待遇 编辑:程序博客网 时间:2024/04/28 17:27

http://www.cfanz.cn/index.php?c=article&a=read&id=81066

推荐一些插件:

     NERD_tree   : 一个文件管理插件,一些常用命令: 打开一个目录树( :NERDTree <启动目录> | <bookmark>  )  关闭目录树栏(:NERDTreeClose);切换目录树栏(:NERDTreeToggle);  定义标签(:Bookmark <name>);定义Root标签(:BookmarkToRoot <bookmark>)。。。。。。更多命令和用法见 :help NERD_tree。

     word_complete      :代码自动补全

    SuperTab   :省去Ctrl-n或Ctrl-p快捷键,通过按tab键快速显示补全代码.

    xptemplate  :  快速自动完成一些if、switch、for、while结构模板代码,支持c、c++、Lua、Ruby、Php、html、css、javascript等多种语言。一般是输入结构体的关键字后,再按Ctrl-\组合键即可完成代码补全,然后按Tab键跳转到不同的位置替换模板内容。比如:输入for后按Ctrl-\组合键即可快速完成for结构的模板代码。

      ctags :  一个扫描记录代码的语法元素,并记录为tag,方便代码定位跳转等操作,MacVim自带,但是据说有点问题,笔者用Vundle安装的貌似也有问题,推荐用MacPorts安装,然后在~/.gvimrc配置中加入:  let Tlist_Ctags_Cmd="/opt/local/bin/ctags"。用法:在终端 cd 进入到你的项目根目录,输入语句即可将项目所有代码文件打上tag: 

 ctags ---c++-kinds=+px --fields=+iaS --extra=+q .

       taglist:  可以用Vundle安装,在编辑代码文件时,输入命令":TlistToggle"在右边就会出现当前类的函数或变量列表。输入命令“:tag <函数名或变量、类>”,如果只有一个文件定义了该函数或变量、类,vim打开该文件并将光标定位到对应的位置;如果多个文件有这个函数名或变量、类的tag,将给提示,并可输入“:tselect” ,显示可选的文件。快捷键跳转Ctrl+],Ctrl-o。

       Cscope: 功能跟ctags差不多,不过更加强大,MacVim默认已经支持,输入“:version”命令查看.

      OmniCppComplete:功能跟taglist差不多。 

      a.vim: 在.cpp文件和.h头文件间快速切换的插件。

      grep.vim: 在工程中查找词汇的插件。

      minibufexplorerpp:操作缓存buffer窗口。

      quickfix:MacVim内置安装好了,不需要重新安装。显示一些命令查询结果以及编译错误等信息。

      Command-t:用Commad-t命令快速查找切换文件。如果是用Vundle安装的话,还不能使用,在MacVim中输入“:CommandT”命令会报错。用Vundle安装好打开终端,输入如下命令,等待编译完毕后就可以使用了:

cd ~/.vim/bundle/Command-T/ruby/command-t ruby extconf.rb make

      NERD_commenter.vim: 注释插件。

      DoxygenToolkit.vim: 用于快速生成注释,并由注释生成文档。

      winmanager: 可以用Vundle安装,管理窗口的插件,可以跟NERD_tree、Taglist插件结合,打造一个类似IDE的界面。只需要在NERD_tree.vim中加入如下代码:

let g:NERDTree_title = "NERDTree" function! NERDTree_Start() exec 'NERDTree' endfunction function! NERDTree_IsValid() return 1 endfunction
        并且在winmanager.vim的找到下面代码,增加一句代码:

" toggle showing the explorer plugins. function! <SID>ToggleWindowsManager() if IsWinManagerVisible() call s:CloseWindowsManager() else call s:StartWindowsManager() <span style="background-color: rgb(255, 102, 102);">"NERDTree 打开的时候有一个空白窗口,需要关闭 exec 'q'</span> end endfunction
        最后在~/.gvimrc中加入如下配置:

"在vim左侧显示窗口Taglist和文件列表窗口 "let g:winManagerWindowLayout='FileExplorer,BufExplorer|TagList' let g:winManagerWindowLayout='NERDTree, BufExplorer|TagList' "打开vim时自动打开winmanager let g:AutoOpenWinManager = 1 "定义打开关闭winmanager的快捷键为 wt组合键命令 nmap wt :WMToggle<cr>

           

          重启,即可看到一个类似IDE的Vim界面。

编辑器


   4、Vim的模式与一些常用命令

 i、Vim的模式

      Vim有三种模式,Normal 、Insert 、 Visual。在Normal模式下,可以输入运行命令;在Insert模式下,可以输入编辑文本;在Visual模式下,可以对选定的文本运行命令操作并该命令仅仅作用于选定文本。启动Vim的默认模式是Normal模式,输入 i、I、a、A、o、O、s、S、r、R可以进入Insert模式,其中区别在于:

       

进入Insert模式的命令区别命令区别     i 在光标之前插入字符     I在光标所在行的所有字符开头之前插入字符    a在光标之后插入字符    A在光标所在行的所有字符之后插入字符o在当前光标的下面打开新的一行O在当前光标的上面打开新的一行s删除当前光标下的字符S删除当前光标所在行的所有字符r用新输入的字符替换当前光标所在字符,然后立即返回Normal模式R在当前光标位置所在字符开始往后一直用新输入的字符替换所有原有字符














  


 




     

在Nomal模式中输入v进入Visual模式。 Insert模式或Visual模式中按Esc键即返回Normal模式。


iiVIm的常用命令(不做特殊注释的话,下面的命令一般在Normal模式生效,一般对文本操作的命令在Visual模式下也同样生效)

        (1)、光标的移动: 

         h()j(下)、k(上)、l(右)移动光标。还可以在命令之前输入数字,指定要移动多少行。比如:7h表示左移7个光标,6j表示光标下移6行。

         标向前跳多个词到达词首,比如5词,输入5w;标向后跳7词到达词首,输入7b。跳到3单词后的词末,输入3e;跳到3单词前的词末,输入3ge

         动到行首第一个非空字符,输入"^"或按Home键;移动到光标所在行的第一个字符(包括空格);移动到行尾,输入"$"或按End键。注意,这个只有"$"或按End键之前加数字会生效。

         向前移动到某个指定的字符,比如向前找第三个“h”输入”3fh“;向前把光标移动到第四个"b"字符的前一个字符上,输入”4tb“。向后移动到某个指定的字符,比如向后查找第三个”h“输入”3Fh“;向后把光标移动到第四个”b“的后一个字符上,输入”4Tb“这四个命令都可以使用”;“命令重复,","命令反向重复。光标不会移出当前行。

         "%"命令可以将当前光标所在的括弧移动到匹配的括弧的位置,比如:从”)“动到”(“,反之亦然。

         gd命令到达光标所在处函数或变量定义之处。 

         ”*“”#“命令匹配当前光标所在单词, ”*“移动光标的下一个匹配单词,而”#“命令是移动光标到上一个匹配单词。

         移动到指定行,比如想移动到第30行,输入30G输入30gg。没有数字限制的话,G命令将光标移动到文件的尾部,gg命令移动光标到文件开始。

         移动都某部分,比如到文件大约10%的行位置,输入”10%“

         H命令移动光标到视野内的第一行,M动到视野内的中部,L动光标到视野内的最后一行。

         确定光标的位置,输入Ctrl-G命令。

         Ctrl-u命令光标向上移动半屏,Ctrl-d标向下移动半屏。

         Ctrl-e上滚一行,Ctrl-y下滚一行。

         Ctrl-f标向前移动一整屏,Ctrl-b标向后移动一整屏。

        ”zt“命令将光标所在行移动到屏幕的顶部,”zz“命令将光标所在行移动到屏幕的中部,”zb“将光标移动到屏幕的底部。

         (2)删除字符:

         删除某个字符,移动光标到所在字符,然后输入x或dl(光标下的字符)、X或dh(光标签的字符)删除多个字符,可以在x之前加数字;

         删除从当前光标到所在行上指定的某个字符之间的所有字符(包括该指定字符)

         删除某行,移动光标到所在行,然后输入dd

         删除换行符将两行连起来,光标移动到要合并的两行的第一行,然后输入J

         利用命令组合模式,操作符-动作。d命令后跟一个光标移动动作,将删除从当前位置到光标移动到的目标位置的全部内容。例如:删除从当前光标向前的5单词,命令为d5w删除从当前光标位置到行尾的字符,命令为d$

         db表示从当前位置删除到前一个单词的开头。diw表示删除光标上的单词(不包括空格)。daw表示删除光标上的单词(包括空格)。

         从当前光标位置上的字符一直删除到指定的字符(包括指定字符),用df命令,比如,删除到r,命令为dfr。从当前光标位置删除到指定字符的前一个字符,用dt命令,比如:dtr。

         dG 表示从当前光标位置一直删除到文件的末尾。dgg表示从当前光标位置一直删除到文件的开始。

          (3)、修改字符:

          修改字符的操作命令是c。作用是删除字符后自动切换到Insert模式,比删除操作命令多了一个切换到Insert模式的功能。

          修改光标下的 字符,cl.

          修改光标前的字符,ch.

          修改当前光标后的3个词,组合命令是c3w。

          修改当前光标之前的单词,cb.

          修改光标上的单词,不包括空格,ciw。

          修改光标上的单词,包括空格,caw。

          修改到指定字符(包括指定字符),比如修改到e,命令为cfe。

          修改到指定字符之前一个字符,比如,修改到e之前的字符,cte.

          修改光标所在行一整行,cc。

          从当前光标位置修改到行尾,c$。

          cG,修改到文件的末尾。

          cgg,修改到文件的开头。

         (4)、替换字符

         r命令是进入Insert模式的命令之一,进入Insert模式等待你输入一个字符替换当前光标上的字符后自动返回Normal模式。 

         在r命令之前加入数字前缀,可以用一个字符替换当前光标后的多个字符。比如:3rp。但是例外的是,如果替换的字符是回车键,则只会用一个换行符替换多个字符。        

         使用R命令启动Replace模式, 这个模式下在当前光标位置所在字符开始往后一直可以持续用新输入的字符替换所有原有字符,直到你退出Replace模式。在这个模式下,使用退格键Backspace,原来被替换的字符会恢复。

        (5)查询字符:

         从当前光标位置向前查找当前行上的某个指定字符的第一个字符,命令是f。比如: 查找w,fw。F也和f命令一样,但是查找方向相反。

        从当前光标位置向前查找当前行上的某个指定字符的前一个字符,命令是t。比如: 查找o之前的字符,to。T也和t命令一样,但是查找方向相反。

         向前查找字符单词命令, ”/“后加上想查找的字符单词。比如:”/a“ 就是查找字符”a“。想要向前查找当前光标后第三个匹配的a还需要输入”3n“命令。向后第三个则输入”3N“

         向后查找字符,”?“后加上想查找的字符。想要向前查找光标后第三个匹配的字符,还需输入”3N“。向后第三个则输入”3n“

         查找字符通常区分大小写的,如果不想区分大小写,可在~/.vimrc文件中加入命令"set ignorecase"命令。

         还可以将光标移动要查找的单词上,然后输入”*“命令,这样将取得当前光标上的单词并向前查找该单词。想要向前查找光标后第2单词,可以输入"2*"

          向后查找当前光标上的单词,则可以输入”#“。想要向后查找当前光标的第2单词,可以输入”2#“

          输入”/di“,也可能查找到单词”media“。如果想限定di只匹配单词开头,可以输入”/<di“。如果只想查找以di结尾的单词,则可以输入”/di>“。如果只想查找完整的单词"di"输入”/<di>“。注意,”*“”#“命令也是匹配整个单词查找的,如果想要部分匹配,输入”g*“”g#“

          "/^di",只匹配行首。"/di$"只匹配行未。”/^di$“仅仅匹配包括”di“的行并不带空格。

           ”/d.i“只匹配第一个字符是”d“,第二个字符是任意字符,第三个字符是”i“的字符串。

          ”/di/.“匹配带特殊字符”.“的字符串”di.“

          (6)、复制字符

          使用d、x或其它命令删除文本的时候,这些被删除的文字将会被Vim缓存起来。可以使用p命令将该被删除的文本在当前光标的前面(比如前一行)重新粘贴出来。

          使用y(yank:抽出)操作符命令可直接把文字拷贝到寄存器中,然后用p命令粘贴到其他地方。比如:拷贝4个单词,4yw(包括了单词后面的空格,用ye则不包括单词后的空格)。

         yl拷贝当前光标下的字符,yh拷贝当前光标之前的字符。

         yw拷贝当前光标到下一个单词的开头,yb拷贝当前光标到上一个单词的开头。yiw,拷贝光标上的单词(不包括空格)。yaw,拷贝光标上的单词(包括空格)。

 y$拷贝到行尾。

          yy命令拷贝一整行,快捷方式为Y。

          yG,拷贝到文件的末尾。

          ygg,拷贝到文件的开头。

       (7)、文本对象

          当处于某个单词或句子的中间,而又想删除整个单词或句子时,可以使用文本对象。比如:diw可以删除一整个单词(iw表示Inner word,不包括单词后的空格),如果想要包含单词后的空格也删除,可用命令daw。同样地,cis表示修改一整个句子(is表示Inner Sentence,不包括句子后的空格),如果想要包含句子后的空格也修改,则用命令cas。

          同样地,在Visual模式下,也可以用文本对象命令来选中更多的文本。比如使用aw选中当前的整个单词,再次使用则选中多一个单词。

          文本对象的表达式:<操作命令>a<文本对象>或<操作命令>i<文本对象>,操作命令可以是任何命令,如d,y,c;文本对象可以是一个单词w,一个句子s,一个段落p,也可以是一个特殊的字符:"、'、)、}、]。

          使用 :help text-objects 可以在帮助里查看更多的文本对象的更多命令内容。

          使用:help operator 可以在帮助里查看更多的操作符命令内容。

          (8)、撤销与重做:

          销上一个编辑操作,输入u;撤销所有在前一个编辑行上的操作,输入U;重做,输入Ctrl+r

         "."命令表示重复最后一次除u命令、Ctrl-r命令和冒号命令之外的任何操作命令。

          (9)查找命令

         输入"/"”?“”:"后,按方向键上箭头或下箭头,可以查找同样的历史命令记录。

         (10)、命令次数:

          可以在很多命令之前加上数字,表示执行该命令的次数。

          在组合命令的中,数字可以放在不同的地方。比如:修改5个单词,5cw和c5w都一样;删除10个单词,可以写成10cw、c10w,或者2c5w、5c2w。其中的差别在于数字修饰的命令不一样,但是作用是一样的。

          (11)、退出:

           保存文件并退出,输入ZZ或":wq"或“:x”;放弃修改并退出,输入“:q!”;强制退出所有打开的文件,输入“:qa!”

           (12)、放弃执行命令:

          Esc键可以终止大部分命令。    

          (13)、帮助:

          输入“:help”进入帮助窗口;输入ZZ,退出帮助窗口。

          获得具体的帮助,比如关于u命令的帮助,输入类似“:help u”

          认显示Normal模式的帮助,要显示其他模式的命令,可以使用“i_”缀。

          获取命令参数的帮助,比如:“:help -e”.

          使用“:helptags ~/.vim/doc” 命令产生插件的本地tags文件,从而可以在帮助中查询插件的文档。

          (14)标签跳转:

           [ ]包起来的文字是一个标签链接,光标移动到 [ ]间,按Ctrl+]组合键跳转到标签链接的地方。Ctrl+t Ctrl + O跳回前一个标签。

          使用G命令或者”n“命令或者查找”/“命令跳到其他行后,Vim记录下你跳过来的地方,使用两个单引号('')即可跳回原来的地方;或者使用Ctrl-o命令跳到较旧的地方;Ctrl-i命令Tab键跳到较新的地方。输入":jumps"命令可以看到光标跳转的位置列表信息。

           使用”m“命令标记当前光标的位置,位置的名称只能为a~z单个字母(区分大小写)。比如:定义当前光标的位置为”E“,命令"mE"设置后可以通过单引号'+标名称,或者上句号`+标名称可以跳到指定的光标位置,区别是单引号 ’E命令跳转到标记光标位置所在行的首个非空字符(列的位置跟标记的时候不同),而上句号 `E转到标记的光标原来位置(包括行和列的位置都跟标记的时候一样)。输入”:marks“命令可以查看所有带名称的标记信息列表,其中有几个特殊的标记。比如:单引号 ' ,表示跳转前的位置。双引号 "表示Normal模式最后编辑的位置。中括号 [表示文件第一行的第一列。 中括号 ]表示文件最后一行的第一列。 ^ 表示Insert模式下最后修改的位置。 表示无论是Insert模式或Normal模式最后修改的位置的开头。

         (15)显示Vim相关的文件路径

         :scriptnames命令可以查找~/.vimrc~/.gvimrc或插件等文件的路径。

         (16)、在vim中打开编辑文件命令: 

:e! ~/.vimrc

          保存文件: 

:w
           另存为:

:saveas pathFile
          当同时打开多个文件,在多个文件间切换命令:

:bn //下一个文件  :bp //前一个文件
          

         (17)、Visual模式

         之前介绍过,在Normal模式下,输入v,进入Visual模式。这样,你对光标作任何移动操作,从当前光标位置到移动到的位置之间的文本都会高亮,此时输入操作命令,比如删除命令d,则高亮部分文本会被删除。

       在Visual模式下光标的移动操作跟Normal模式差不多。注意,在Visual模式下,"o"命令表示返回到选中文字的另一端,这跟Normal模式不同。

     (18)、快捷键与一些常用的命令:

        一些经常使用的组合命令,存在等价的快捷单字符命令:

         dl 的等价快捷键为 x,作用删除当前光标下的字符。

        dh的等价快捷键为 X,作用删除光标左边的字符。

        d$的等价快捷键为D,作用删除到行尾。

        cl的等价快捷键为s,作用修改当前光标的字符。

        cc的等价快捷键为S,作用修改一整行。

        c$的等价快捷键为C, 作用修改到行尾。

         yy的等价快捷键为Y,作用拷贝一整行。


         一些常用的命令的如下:

        c           修改操作命令

        d          删除操作命令

        y          复制到寄存器的操作命令

        ~          修改选中的字符的大小写,原来大写的转换成小写,原来小写的转成大写。在Visual模式和Normal模式下都能生效。 注意,只有tiledeop设置后,这个才能成为一个操作命令,才可用该命令与其他光标移动的命令组合使用。

       g~        修改选中的字符的大小写操作命令,原来大写的转换成小写,原来小写的转成大写。

       gu        修改选中的字符为小写操作命令。

       gU       修改选中的字符为大写操作命令。

        !           过滤警告操作命令

        gq      选中文本格式化,文本拼接组合成句子或段落命令。在Normal模式和Visual模式下都能生效。

        >        选中文本向右Tab缩进。在Normal模式和Visual模式下都能生效。

        <         选中文本向左Tab缩进。在Normal模式和Visual模式下都能生效。

       gd      到达光标所在处函数或变量定义之处。


       块操作命令过程: 移动到想要进行操作的位置,比如行首或行尾;按组合键Ctrl-v,进入块操作模式;移动光标到任何地方,选定块操作的范围,比如:hjkl命令;最后输入I(在块的每一行首插入字符)或A(块的每一行尾部插入)进入Insert模式,然后输入想要插入的字符,按Esc键使块的每一行同样的位置生效。

        

        自动补全功能:在Insert模式下,输入一个词的开头,然后按组合键Ctrl-n或Ctrl-p,就出现自动补全的提示。


        宏录制:q + <宏> + 操作队列 + q ,@<宏> , @@。<宏> 可以是任意单个字母(区分大小写)或任意单个数字, q<宏> 进入recording模式,该模式下你的操作记录会保存到寄存器<宏> 中;然后输入@<宏>操作命令将重新执行被记录到寄存器<宏>中的命令;@@命令跟@<宏>的作用一样。


        可视化选择:v,V,Ctrl-v.  v,V都可以进入Visual模式,而Ctrl-v可以进入Visual Block模式(即块操作模式),在这两个模式下,都可以移动光标选定编辑文本。对选定文本执行c,y,d等操作,下面有几个常用的对选定文本的操作:

  • J:把所有行连起来变成一行。
  • >或<操作,文本向左右Tab缩进。
  • =操作:选中文本自动缩进。          
        
        分屏:[N]-Ctrl-w-s、[N]-ctrl-w-S或:[N]sp[lit],组合命令将Vim的屏幕高度分出一个新的具有N行的屏幕,其中[N]和[lit]选项可以不输入。即:sp或:5split都是合法的分屏命令。
                   [N]-Ctrl-w-v或:[N]vs[plit]组合命令将Vim的屏幕宽度分出一个新的具有N列的屏幕,其中[N]和[plit]选项可以不输入,即:vs或:5vsplit都是合法的分屏命令。
                   [N]-Ctrl-w-n或:[N]new 组合命令将Vim的屏幕高度分出一个新的具有N行的屏幕,并打开一个新的空文件开始编辑。
                   :[N]vne[w] 组合命令将Vim的屏幕宽度分出一个新的具有N列的屏幕,并打开一个新的空文件开始编辑。
                   :q或:q!、:close或:close!(最后一个窗口不关闭)、:hide(最后一个窗口不关闭)可以关闭当前屏幕窗口。:on[ly][!]    除了当前窗口所有其他窗口都关闭。
                   Ctrl-w-w、Ctrl-w-方向键(包括hjkl和箭头方向键),可以在多个窗口中切换。Ctrl-t(top-left窗口)、Ctrl-b(bottom-right窗口)、Ctrl-p(上一个窗口)也是常用的切换窗口命令。
                   Ctrl-w-r、 Ctrl-w-R、 Ctrl-w-x、 Ctrl-w-J\H\K\L\T等可以改变窗口的布局。
                   Ctrl-w-+(增加尺寸)、 Ctrl-w--(减少尺寸)增加或减少当前窗口屏幕尺寸。Ctrl-w-_(竖屏最大化)、Ctrl-w-| (横屏最大化)用来最大化当前分窗口屏幕。

    
           自己配置不同的语言函数自动补全的步骤:
           创建~/.vim/dict     目录, 然后创建包含各种语言函数列表的txt文件;最后在~/.gvimrc文件加入如下命令:
 
au FileType cpp setlocal dict+=~/.vim/dict/cpp_function_list.txt


       (19)菜单快捷键

         编辑菜单:

         Undo   快捷键  command+z

         Redo  快捷键 shift+command+z

         Cut    快捷键 command+x (剪切的文本可以粘贴于其他程序或vim)

         Copy 快捷键 command+c  (复制的文本可以粘贴于其他程序或vim)

         Paste 快捷键 command+v 

         Select All 快捷键 command+a


         文件菜单:

         New window  快捷键 Command+n

         New  Tab 快捷键 Command+t

         Open New File  快捷键爱你 Command+o

         Save 快捷键 Command+s 

         Save as 快捷键 shifit+Command+s

         Close window 快捷键 Shift+Command+w

         Close   快捷键 Command+w

 

5、最后贴出本人的~/.vimrc和~/.gvimrc配置:

    ~/.vimrc配置如下:

" An example for a vimrc file.一般设置cli相关设置,即命令行相关设置,插件相关设置。原因加载顺序是先读取vimrc配置,然后读取plugin插件,然后加载GUI,最后再读取gvimrc配置文件。所以,GUI以及快捷键一般放到gvimrc里设置,有时候在vimrc设置跟界面显示相关的没作用,要在gvimrc里设置才有用。vimrc配置是vim,gvimrc配置文件是gvim,如果想要vim也有配色等,可以将界面相关的设置放在vimrc文件里重新设置一下。  "------------------------------------------------------------------------------- "基本设置 "------------------------------------------------------------------------------- " When started as "evim", evim.vim will already have done these settings. if v:progname =~? "evim" finish endif   "启用Vim的特性,而不是Vi的(必须放到配置的最前边) set nocompatible  " 设置编码  set encoding=utf-8  set fenc=utf-8  set fileencodings=ucs-bom,utf-8,cp936,gb2312,gb18030,big5   "显示行号 set number  "设置默认打开窗口大小 set lines=70 columns=100  "设置窗口透明度 set transparency=10  "设置背景色 "set bg=dark  "用 koehler 调色板 colorscheme koehler  "隐藏工具栏和滑动条 set guioptions=aAce   "设置标签栏 "最多30个标签 set tabpagemax=30  "显示标签栏  set showtabline=2    "设定文件浏览器目录为当前目录 "set bsdir=buffer "set autochdir  "保存100条命令历史记录 set history=100  "总是在窗口右下角显示光标的位置 set ruler  "在Vim窗口右下角显示未完成的命令  set showcmd  " 启用鼠标 if has('mouse') set mouse=a endif  "设置语法高亮 if &t_Co > 2 || has("gui_running") syntax on endif   "------------------------------------------------------------------------------- "文本操作设置 "------------------------------------------------------------------------------- "设置字体 set gfn=Courier:h15  "设置自动缩进 "设置智能缩进 set tabstop=4 set shiftwidth=4 set softtabstop=4 set expandtab set smarttab   "设置Tab键跟行尾符显示出来 set list lcs=tab:>-,trail:-  "设置自动换行 set wrap  "设置Insert模式和Normal模式下Left和Right箭头键左右移动可以超出当前行 set whichwrap=b,s,<,>,[,]  "设置光标移动到屏幕之外时,自动向右滚动10个字符 set sidescroll=10       "设置使~命令成为操作符命令,从而使~命令可以跟光标移动命令组合使用 set tildeop  "在Insert模式下,设置Backspace键如何删除光标前边的字符。这里三个值分别表示空白字符,分行符和插入模式之前的字符。 set backspace=indent,eol,start  "定义键映射,不使用Q命令启动Ex模式,令Q命令完成gq命令的功能---即文本格式化。 map Q gq  " CTRL-U 在Insert模式下可以删除当前光标所在行所在列之前的所有字符. Insert模式下,在Enter换行之后,可以立即使用CTRL-U命令删除换行符。 inoremap <C-U> <C-G>u<C-U>  "使 "p" 命令在Visual模式下用拷贝的字符覆盖被选中的字符。 vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>   "------------------------------------------------------------------------------- "搜索设置 "------------------------------------------------------------------------------- "打开搜索高亮 set hlsearch  "忽略大小写 set ignorecase  "在查找时输入字符过程中就高亮显示匹配点。然后回车跳到该匹配点。 set incsearch  "设置查找到文件尾部后折返开头或查找到开头后折返尾部。 set wrapscan    "------------------------------------------------------------------------------- "文件设置 "-------------------------------------------------------------------------------  "设置当Vim覆盖一个文件的时候保持一个备份文件,但vms除外(vms会自动备份。备份文件的名称是在原来的文件名上加上 "~" 字符 if has("vms") set nobackup else set backup endif   if has("autocmd") "启用文件类型检测并启用文件类型相关插件,不同类型的文件需要不同的插件支持,同时加载缩进设置文件, 用于自动根据语言特点自动缩进. filetype plugin indent on  "将下面脚本命令放到自动命令分组里,这样可以很方便地删除这些命令. augroup vimrcEx au! "删除原来组的自动命令  "对于所有文件类型,设置textwidth为78个字符. autocmd FileType text setlocal textwidth=78  //vim启动后自动打开NerdTree autocmd vimenter * NERDTree autocmd vimenter * if !argc() | NERDTree | endif "设置关闭vim NerdTree窗口 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif  "当打开编辑文件时总是自动执行该脚本,跳转到最后一个有效的光标位置Mark标记。当一个事件正在处理时,不执行该脚本命令。 "行首的反斜杠用于把所有语句连接成一行,避免一行写得太长.  autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif  augroup END else "Enter换行时总是使用与前一行的缩进等自动缩进。 set autoindent "设置智能缩进 set smartindent  endif    "编辑一个文件时,你所编辑的内容没保存的情况下,可以把现在的文件内容与编辑之前的文件内容进行对比,不同的内容将高亮显示 if !exists(":DiffOrig") command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis \ | wincmd p | diffthis endif   "------------------------------------------------------------------------------- "插件设置 "-------------------------------------------------------------------------------  "插件相关的设置 "matchit 的字符匹配自定义设置 let b:match_words = '\<if\>:\<endif\>,' \ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>'    "Vundle 的配置  filetype off " required!  set rtp+=~/.vim/bundle/vundle/ call vundle#rc()  " let Vundle manage Vundle " required!  "管理Vim插件  Bundle 'gmarik/vundle'    " My Bundles here: " original repos on github "文本按字符对齐 Bundle 'godlygeek/tabular'  " vim-scripts repos "实现“begin”/“end”类似地匹配,~/.vimrc文件中添加自定义的设置:let b:match_words = '\<if\>:\<endif\>,' \ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>' Bundle 'matchit.zip'  Bundle 'moria' Bundle 'word_complete.vim' Bundle 'SuperTab' Bundle 'xptemplate' Bundle 'ctags.vim' Bundle 'taglist.vim' Bundle 'winmanager' Bundle 'Command-T'  " non github repos "Bundle 'git://git.wincent.com/command-t.git' " ... Bundle 'https://github.com/scrooloose/nerdtree.git'  filetype plugin indent on " required! " " Brief help " :BundleList - list configured bundles " :BundleInstall(!) - install(update) bundles " :BundleSearch(!) foo - search(or refresh cache first) for foo " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles " " see :h vundle for more details or wiki for FAQ " NOTE: comments after Bundle command are not allowed.. 





~/.gvimrc配置如下:

" An example for a gvimrc file.一般设置GUI和快捷键等 "------------------------------------------------------------------------------- "gvimrc导入的默认设置 "------------------------------------------------------------------------------- " 设置窗口底部命令有两行 set ch=2  " 输入文本时隐藏鼠标 set mousehide  "键位映射,使shift-insert快捷键像在 Xterm程序中一样工作 map <S-Insert> <MiddleMouse> "鼠标中键代表快捷粘贴 map! <S-Insert> <MiddleMouse>  " Vim版本5.0或以上下面脚本工作. if version >= 500  "高亮C注释字符串 let c_comment_strings=1  "如果没启动语法高亮,启动语法高亮 if !exists("syntax_on") syntax on endif  "启动搜索高亮. set hlsearch  " 设置颜色 " 文本背景为浅灰色 " 文本的最后一行为深灰色 " 光标设置成绿色, C当 ":lmap"映射激活时变成青色 " 常量设置为没有底线,但常量的背景颜色浅一些 highlight Normal guibg=grey90 highlight Cursor guibg=Green guifg=NONE highlight lCursor guibg=Cyan guifg=NONE highlight NonText guibg=grey80 highlight Constant gui=NONE guibg=grey95 highlight Special gui=NONE guibg=grey95  endif     "------------------------------------------------------------------------------- "基本设置 "------------------------------------------------------------------------------- " When started as "evim", evim.vim will already have done these settings. " 设置编码  set encoding=utf-8  set fenc=utf-8  set fileencodings=ucs-bom,utf-8,cp936,gb2312,gb18030,big5   "显示行号 set number  "设置默认打开窗口大小 set lines=70 columns=100  "设置窗口透明度 set transparency=10  "设置背景色 "set bg=dark  "用 koehler 调色板 colorscheme koehler  "隐藏工具栏和滑动条 set guioptions=aAce   "开启自带的tab栏 set showtabline=2   "总是在窗口右下角显示光标的位置 set ruler  "在Vim窗口右下角显示未完成的命令  set showcmd  "设置语法高亮 if &t_Co > 2 || has("gui_running") syntax on endif   "------------------------------------------------------------------------------- "文本操作设置 "------------------------------------------------------------------------------- "设置字体 set gfn=Courier:h15  "设置自动缩进 set tabstop=4 set shiftwidth=4 set softtabstop=4 set noexpandtab  "设置Tab键跟行尾符显示出来 set list lcs=tab:>-,trail:-   "设置自动换行 set wrap  "设置光标移动到屏幕之外时,自动向右滚动10个字符 set sidescroll=10   "------------------------------------------------------------------------------- "搜索设置 "------------------------------------------------------------------------------- "打开搜索高亮 set hlsearch  "忽略大小写 set ignorecase  "在查找时输入字符过程中就高亮显示匹配点。然后回车跳到该匹配点。 set incsearch  "设置查找到文件尾部后折返开头或查找到开头后折返尾部。 set wrapscan    "------------------------------------------------------------------------------- "文件设置 "-------------------------------------------------------------------------------    "------------------------------------------------------------------------------- "插件界面设置 "-------------------------------------------------------------------------------  "ctags的设置,这里的ctags是用MacPorts安装的,用Vundle安装的'ctags.vim'有问题,系统自带的ctags也有点问题 let Tlist_Ctags_Cmd="/opt/local/bin/ctags"  let Tlist_Exist_OnlyWindow=1 " 如果taglist窗口是最后一个窗口,则退出vim let Tlist_Auto_Update " Update the tag list automatically  "在vim左侧显示窗口Taglist和文件列表窗口 "let g:winManagerWindowLayout='FileExplorer,BufExplorer|TagList' let g:winManagerWindowLayout='NERDTree, BufExplorer|TagList' "打开vim时自动打开winmanager let g:AutoOpenWinManager = 1 "定义打开关闭winmanager的快捷键 nmap wt :WMToggle<cr> 


         本文走马观花地带领大家快速浏览了MacVIm的一些基本功能,也相当于笔者的一个学习总结。实际上,上边谈到的每一个内容都可以独立写成一篇博客来介绍,对于Vim的更多具体用法还需要去进行更深入的学习。写这篇文章,笔者参考了很多资料,在这里罗列一些出来供读者参考。


参考资料:

Mac OS X使用之——新年第一天弘法寺许愿,MacVim小试

vim基本命令

vim 命令(全)

手把手教你把Vim改装成一个IDE编程环境(图文)

把VIM打造成一个真正的IDE(3)

将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)

简明 Vim 练级攻略

0 0
原创粉丝点击