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

  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2716173.html
Copyright © 2011-2022 走看看