zoukankan      html  css  js  c++  java
  • VIM

    1、安装 c++ 的 man 文档(此不是VIM插件)

    http://gcc.gnu.org/mirrors.html  的其中一个镜像站中,下载最新的 libstdc++/doxygen/libstdc++-man-xxxxxx.tar.bz2
    然后放到Linux目录下,把里面的 man3 文件夹中的文件全部解压到 /usr/share/man/man3 目录下。
    这样就可以使用:man std::string 这样的命令去查看帮助了。
     
    2、配置文件位置:
    /etc/vimrc 文件是整个系统的VIM配置文件,用户配置文件是 $HOME/.vimrc (可以在$HOME目录下,执行 ls -a 来查看,默认没有,可以创建一个)。
     
    3、插件存放位置:
    系统位置在vim安装目录,一般是 /usr/share/vim/vim70/ ,用户的位于 $HOME/.vim/ (如果不存在,可新建该目录即可),一般插件都放于后面那个目录里才能起作用。(比如 omnicppcomplete )
     
    4、VIM配置文件
    "设置编码
    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
        set fileencodings=utf-8,latin1
    endif
    
    
    "去掉vi一致性
    set nocompatible    "set nocp
    
    "配色方案选择,所有配色方案文件在 /usr/share/vim/vim70/colors 目录下
    "colorscheme default
    colorscheme desert
    
    "让backspace回退键可用
    set backspace=indent,eol,start
    
    "语法高亮显示
    syntax on
    "syntax enable
    
    "把当前行的对齐格式应用到下一行
    set autoindent
    
    "开启智能缩进,比如使用左大括号后回车会缩进
    set smartindent
    
    "自动缩进长度,包括<< 与 >> 命令移动的长度
    set shiftwidth=4    "se sw=4
    
    "TAB长度
    set tabstop=4
    
    "显示行号
    set nu
    
    "显示匹配,即输入一个右括号时,光标会迅速匹配一下左括号
    "set showmatch
    
    "在编辑过程中,在右下角显示光标位置的状态行
    set ruler
    
    "修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀
    "set nobackup
    "set backup
    
    "解决复制后格式乱的问题,但该命令不建议写到配置文件里,因为它会取消自动缩进
    "可以在粘贴时先 :set paste  粘贴完之后 :set nopaste
    "set paste
    
    "设置手动折叠
    "set foldmethod=manual
    
    "打开文件类型自动检测功能
    filetype on
    
    "设置vim记录的历史数,即输入:命令,按上方向键保存的命令数
    set history=10
    
    "搜索时忽略大小写
    set ignorecase
    
    "设置一键编译
    map <F6> :make<CR>
    
    "开启高亮显示查找结果
    set hlsearch
    
    "搜索到文件两端时不重新搜索
    set nowrapscan
    
    "突出显示当前行,即在当前行下面加下划线
    "set cursorline
    
    "命令行的高度,默认为1
    set cmdheight=1
    
    "为特定的文件类型允许插件文件的载入,
    "如OmniCppComplete等插件,就必须开启此功能
    filetype plugin on 
    
    "设置 tags 的路径
    set tags+=tags
    set tags+=/usr/share/vim/vim70/tags/libc.tags
    set tags+=/usr/share/vim/vim70/tags/susv2.tags
    set tags+=/usr/share/vim/vim70/tags/glib.tags
    set tags+=/usr/share/vim/vim70/tags/cpp.tags
    
    "OmniCppComplete 插件设置
    let OmniCpp_NamespaceSearch = 1
    let OmniCpp_GlobalScopeSearch = 1
    let OmniCpp_ShowAccess = 1
    let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
    let OmniCpp_MayCompleteDot = 1 " autocomplete after .
    let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
    let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
    let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

    如果用VIM打开文件有中文乱码,可以在配置文件中加上如下:

    set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8

    5、OmniCppComplete补全插件

    很多年没更新了,最新版本是2007年的,下载地址是 http://www.vim.org/scripts/script.php?script_id=1520 ,不过仍然还是很好用的。

    下载之后,放到 $HOME/.vim/目录下解压即可。然后在VIM配置文件里进行配置,配置见第4条。

    该插件是利用 tags 来补全的,所以要先生成 tags 文件,并在配置文件里添加该文件路径。

    ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .

    新时代的Vim C++自动补全插件 clang_complete

    http://www.cnblogs.com/Jiajun/p/3307979.html

    下载地址:http://www.vim.org/scripts/script.php?script_id=3302

    下载后将执行下面的语句即可完成安装:

    vim clang_complete.vmb -c 'so %' -c 'q'

    或者直接把下载的 clang_complete.vmb 复制到家目录下.vim/plugin 下

    这时候编写一般的C++代码应该有智能提示了 ,不过对于C++11相关的代码却没有,比如智能指针,这时编辑 /etc/vimrc 文件,加上:

    let g:clang_complete_copen=1
    let g:clang_periodic_quickfix=1
    let g:clang_snippets=1
    let g:clang_close_preview=1
    let g:clang_use_library=1
    let g:clang_user_options='-std=c++11 -Imyinclude'

    老实说,前面我都不知道什么意思,最后一句作用很大,引入c++11,和自己指定的头文件目录(如果出现找不到的话)

    参考:http://www.cnblogs.com/egmkang/archive/2011/02/20/clang_complete.html

    • 使用 Ctrl + N 强制打开补全列表
    • 分别使用 Ctrl + N 和 Ctrl + P 来下翻和上翻
    •  

    二、配置VIM语法文件:

    VIM语法文件一般位于(如vim72):/usr/share/vim/vim72/syntax/  文件夹下,如 c.vim、cpp.vim 等,也可以在家目录下新建  ~/.vim/syntax/c.vim 等。

    1、添加自定义关键字,如自定义的类:

    " User Defined DataType
    syn keyword cType User Room Game user_ptr

    2、添加函数

    3、添加操作符

    "========================================================
    " Highlight All Function
    "========================================================
    syn match cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>[^()]*)("me=e-2
    syn match cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>/s*("me=e-1
    hi cFunction gui=NONE guifg=#B5A1FF
    "========================================================
    " Highlight All Math Operator
    "========================================================
    "C math operators
    syn match cMathOperator display "[-+/*/%=]"
    " C pointer operators
    syn match cPointerOperator display "->/|/."
    " C logical operators - boolean results
    syn match cLogicalOperator display "[!<>]=/="
    syn match cLogicalOperator display "=="
    " C bit operators
    syn match cBinaryOperator display "/(&/||/|/^/|<</|>>/)=/="
    "syn match cBinaryOperator display "/~"
    "syn match cBinaryOperatorError display "/~="
    " More C logical operators - highlight in preference to binary
    syn match cLogicalOperator display "&&/|||"
    syn match cLogicalOperatorError display "/(&&/|||/)="
    " Math Operator
    hi cMathOperator guifg=#3EFFE2
    hi cPointerOperator guifg=#3EFFE2
    hi cLogicalOperator guifg=#3EFFE2
    hi cBinaryOperator guifg=#3EFFE2
    hi cBinaryOperatorError guifg=#3EFFE2
    hi cLogicalOperator guifg=#3EFFE2
    hi cLogicalOperatorError guifg=#3EFFE2
    
    
    "========================================================
    " My Own DataType
    "========================================================
    syn keyword cType User Room Game

    在 cpp.vim 中如下设置颜色:  

    hi cPointerOperator guifg=#3EFFE2 ctermfg=132

    其中,guifg 表示GUI的前景色,ctermfg表示彩色终端前景色。(相应的还有guibg,ctermbg,还有设置属性的如 gui  和 cterm ,其值可以为 bold,underline 。

    export TERM=xterm-256color 设置终端使用256色.

    从 http://www.vim.org/scripts/script.php?script_id=3412 下载 xterm-color-table.vim.tar.gz 然后解压后,把 plugin/xterm-color-table.vim 放到 vim 的插件目录,然后在VIM里执行 :XtermColorTable 即可显示下面图片:

    光标在一个单词上,按 gd ,会高亮显示此文件中所有此单词,并跳到定义处;按 * 键会跳到下一个;按 # 键会跳到上一个。

    http://blog.csdn.net/fbfsber008/article/details/7055842

    ctags:

    http://ctags.sourceforge.net/

    Ctrl + ] 跳转到定义处,Ctrl + T 回到上一个跳转处。

    ctags --exclude=include/boost -R --c++-kinds=+px --fields=+iaS --extra=+q .
    注意:--exclude=include/boost   一定要在 -R * 之前

    每个参数解释如下:

    -R:ctags循环生成子目录的tags

    --c++-kinds=+px :ctags记录c++文件中的函数声明和各种外部和前向声明

    --fields=+iaS :ctags要求描述的信息,其中i表示如果有继承,则标识出父类;a表示如果元素是类成员的话,要标明其调用权限(即是public还是private);S表示如果是函数,则标识函数的signature。

    --extra=+q:强制要求ctags做如下操作—如果某个语法元素是类的一个成员,ctags默认会给其记录一行,可以要求ctags对同一个语法元素再记一行,这样可以保证在VIM中多个同名函数可以通过路径不同来区分。

    参考:http://www.vimer.cn/2009/10/%E5%9C%A8vim%E4%B8%AD%E4%BD%BF%E7%94%A8ctags.html

    http://www.vimer.cn/

    VIM同时编辑多个文件:

    http://blog.sina.com.cn/s/blog_6c9d65a10100nj76.html

  • 相关阅读:
    【Prince2科普】Prince2的七大原则(6)
    6.08 PMO的生存挑战-这些企业的痛你遇到了吗?
    【Prince2科普】Prince2的七大原则(5)
    【Prince2科普】Prince2的七大原则(4)
    【Prince2科普】Prince2的七大原则(3)
    【Prince2科普】Prince2的七大原则(2)
    项目管理三大认证体系,该选择谁?
    事件委托
    关于js中pushstate popstate
    js中标签的获取
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2716173.html
Copyright © 2011-2022 走看看