VIM工程编辑设置

Linux系统版本:ubuntu 10.10

• vim安装和中文帮助文档

       vim 安装直接选择apt-get install vim(所有的都装上吧,包括vim-gtk,vim-gnome),或者去vim官方下载源码安装。

       中文帮助文档下载:http://sourceforge.net/projects/vimcdoc/files/vimcdoc/

       先将其解压缩:

           tar zxvf vimcdoc-<version>.tar.gz

    然后进入 vimcdoc-<version> 目录并执行

           ./vimcdoc.sh -i

    就可以了。该安装程序会自动识别 Vim 的安装路径,将中文的文档拷贝到相应的地方。原有的英文文档不受影响。

     这种方法对 root 和非 root 用户都适用。但建议以 root 身份安装。具体见vimcdoc目录下INSTALL文件。

    以后用vim时直接:help就可以查看中文帮助文档。

• 语法高亮,自动缩进

       可以参考中文帮助文档中所述,这里只介绍一些简单的。

       设置语法高亮度

       syntax enable

        syntax on

       设置缩进的空格数为4

        set shiftwidth=4

        设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:

        set autoindent

        设置使用 C/C++ 语言的自动缩进方式(如果遇到分支或者函数段会自动缩进一格):

        set cindent

• 智能自动补全

    vim在对不同类型的文件进行补全时,会根据文件类型,为其设置不同的补全函数。也就是说,要实现全能补全功能,

     需要把下面的命令加到你的vimrc中:

      filetype plugin indent on

    表示打开文件类型检测

    set completeopt=longest,menu     

    上面的设置表明,只在下拉菜单中显示匹配项目,并且会自动插入所有匹配项目的相同文本。

    Ctrl+P    向前切换成员

    Ctrl+N    向后切换成员

    Ctrl+E    表示退出下拉窗口, 并退回到原来录入的文字

    Ctrl+Y    表示退出下拉窗口, 并接受当前选项

 

    整行补全                        CTRL-X CTRL-L

    根据当前文件里关键字补全        CTRL-X CTRL-N

    根据字典补全                    CTRL-X CTRL-K

    根据同义词字典补全              CTRL-X CTRL-T

    根据头文件内关键字补全          CTRL-X CTRL-I

    根据标签补全                    CTRL-X CTRL-]

    补全文件名                      CTRL-X CTRL-F

    补全宏定义                      CTRL-X CTRL-D

    补全vim命令                     CTRL-X CTRL-V

    用户自定义补全方式              CTRL-X CTRL-U

    拼写建议                        CTRL-X CTRL-S 

• ctags

    功能就是查找你代码中某个函数的声明和定义位置的跳转。

    ctags源码官方地址:http://ctags.sourceforge.net 用下面的命令解压安装:

    $ tar -xzvf ctags-xx.tar.gz

    $ cd ctags-xx

    $ make

    # make install   // 最好root权限,这样应该所有用户可以使用了

    然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下运行命令: ctags -R

    此时在该目录下会生成一个 tags 文件, 再用vim打开某个代码时需要加上如下命令:

    :set tags=/源码的目录/tags

    表示加载该tags。 

• taglist

      功能是列出所有的函数,宏定义,变量等。

      官方下载地址:http://www.vim.org/scripts/script.php?script_id=273 下载后,把该文件在~/.vim/目录中解压缩。

      这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:

               plugin/taglist.vim – taglist插件

               doc/taglist.txt    - taglist帮助文件

      在.vimrc文件中需要添加代码:

        map <F3> :Tlist<CR> // 快捷键设置

        let Tlist_Use_Right_Window=1 

        let Tlist_File_Fold_Auto_Close=1   

     这样只要在vim中按住F3就可以查看Tlist窗口了。 

• winmanager

      功能主要是打开源代码所在目录所有的文件列表,这样方便在vim中切换工程代码文件。

      官方源码地址:http://www.vim.org/scripts/script.php?script_id=95

      同taglist一样,把解压后的*.vim,*.txt放入plugin/,doc/目录下。

      然后在你的~/.vimrc中加上下面两句代码:

      let g:winManagerWindowLayout='FileExplorer|TagList' // Taglist同时打开。

      nmap wm :WMToggle<cr>  

     这样只要按快捷键wm就可以实现文件查看和tags查看。

• cscope

    功能主要是实现了比ctags更强势的函数,变量查询,包括查询谁调用次函数,次函数调用了哪些函数,某个字符串在哪些地方出现过等等。

    官方地址:http://cscope.sourceforge.net下载一个源码包, 解压后编译安装:

       # ./configure

       # make 

       # make install       // 需要root权限

     使用时,想ctags那样需要在该目录执行 cscope -Rbq 命令,具体含义可以cscope --help查看。

     然后会生成三个文件:cscope.in.out等。

     进入vim后需要把刚才生成的cscope文件导入到vim中来, 用下面的命令:

       :cs add /代码目录/cscope.out /代码目录

      在.vimrc文件中需要添加代码:

     "设置cscope

     :set cscopequickfix=s-,c-,d-,i-,t-,e-

     "快捷键

     nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>

     nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>

     nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>

     nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>

     nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>

     nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>

     nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>

     nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>

 

    cscope的主要功能是通过同的子命令"find"来实现的

    "cscope find"的用法:

    cs find c|d|e|f|g|i|s|t name

    s    查找本 C 符号(可以跳过注释)

    g    查找本定义

    d    查找本函数调用的函数

    c    查找调用本函数的函数

    t    查找本字符串

    e    查找本 egrep 模式

    f    查找本文件

    i    查找包含本文件的文件

• 代码折叠

     set foldmethod=marker( 也可以用indent );

    当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动之:)

    我们可以使用下面的命令来创建和删除折叠:

    zf      创建折叠,比如在marker方式下:

        zf56G,创建从当前行起到56行的代码折叠;

        10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠

        10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。     

        在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。

    zd      删除 (delete) 在光标下的折叠。仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。

    zD     循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。

              仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。

    zE     除去 (Eliminate) 窗口里“所有”的折叠。

              仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。

• 快捷键设置

      这个快捷键是用于写小程序(acm竞赛等)使用方便的。

     "acm编程设置

      func Make(cmd)

              let _makeprg = &makeprg

             let &makeprg = a:cmd

            make

             let &makeprg = _makeprg

     endf

     map <F2> :!date <CR>

     map <F5> :w<CR>:call Make("g++ % -o%:r -O2 -Wall")<CR>

     map <C-F5> :w<CR>:make<CR>

     map <F6> :!./%:r<CR>

     map <F7> :w<CR>:call Make("g++ % -o%:r -g -Wall")<CR>

     map <F8> :!gdb ./%:r<CR>

     map <F9> :!time ./%:r <CR>"

 

posted on 2012-07-11 10:55  千兵卫博士  阅读(959)  评论(0编辑  收藏  举报

导航