zoukankan      html  css  js  c++  java
  • VIM-->c/c++编程环境搭建

    建立基本的文件及目录结构

    "建立vim的基本设置文件
     vim ~/.vimrc  
    "建立插件目录,所有的插件都有各自的文件夹存在.vim目录下
     mkdir ~/.vim  
    ;让vundle接管.vim的插件管理
     git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim   

    基本设置

    " 定义快捷键的前缀,即<Leader>
    let mapleader=";"
    "开启文件类型检测
    filetype on        
    "根据检测到的类型加载不同的插件    
    filetype plugin on      
    
    "让配置文件的更改立即生效
    autocmd BufWritePost ${MYVIMRC} source ${MYVIMRC}  
    
     " 开启实时搜索功能
    set incsearch                                 
     " 搜索时大小写不敏感
    set ignorecase  
    " 高亮显示搜索结果
    set hlsearch         
     " 关闭兼容模式                         
    set nocompatible   
     " vim 自身命令行模式智能补全                      
    set wildmenu   
     
    " 总是显示状态栏
    set laststatus=2
    " 显示光标当前位置
    set ruler
    " 开启行号显示
    set number
    " 高亮显示当前行/列
    set cursorline
    set cursorcolumn
    
    " 开启语法高亮功能
    syntax enable
    " 允许用指定语法高亮配色方案替换默认方案
    syntax on         
    
    " 自适应不同语言的智能缩进
    filetype indent on
    " 将制表符扩展为空格
    set expandtab
    " 设置编辑时制表符占用空格数
    set tabstop=4
    " 设置格式化时制表符占用空格数
    set shiftwidth=2
    " 让 vim 把连续数量的空格视为一个制表符
    set softtabstop=4
     
    " 基于缩进或语法进行代码折叠
    "set foldmethod=indent
    set foldmethod=syntax
    " 启动 vim 时关闭折叠代码
    set nofoldenable          
    "za,打开或关闭当前折叠;zM,关闭所有折叠;zR,打开所有折叠
    " vundle 环境设置
    filetype off
    set rtp+=~/.vim/bundle/Vundle.vim
    " vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
    call vundle#begin()
    
    "避免PluginClean把自己卸载了                                                                                
    Plugin 'VundleVim/Vundle.vim'  
    
    " 插件列表结束
    call vundle#end()
    filetype plugin indent on
    
    "安装插件,先找到其在 github.com 的地址,再将配置信息其加入 .vimrc   "中的call vundle#begin() 和 call vundle#end() 之间,最后进入 vim 执行
    ":PluginInstall 便可自动安装
    
    "要卸载插件,先在 .vimrc 中注释或者删除对应插件配置信息,然后在 vim  "中执行:PluginClean 便可卸载对应插件
    
    "批量更新,只需执行:PluginUpdate

     常用插件

    ctags

    ctags用于在编辑代码时能够快速定位标识符。

    配置步骤如下:

    1、在当前工程根目录下使用" ctags-R ."生成一个tags文件

    2、在.vimrc中加入tags路径 "set tags=~/proj/tags"

    3、加入头文件搜寻路径 "set path+=~/pro/include*"(可以用两个星号"**"代替一个星号,代表遍历的向下寻找,简单粗暴)

    使用步骤如下:

    CRTL+] 跳转到本文件定义处
    CRTL+T 跳转回原来位置
    :help helptags 帮助文件
    g+CRTL+] 跳转到外部引用定义处

    taglist

    taglist基于ctags生成的tags文件,产生当前文件标识符列表,可以一目了然文件结构和快速跳转。

    配置步骤如下:

    "实时显示符号定义插件
    Plugin 'vim-scripts/taglist.vim'
    
    """"""taglist""""""""
    "ctags位于PATH目录下,所以可以省略具体路径
    let Tlist_Ctags_Cmd='ctags'
    "不同时显示多个文件的tag,只显示当前文件的
    let Tlist_Show_One_File=1
    "设置taglist的宽度
    let Tlist_WinWidth =40
    "如果taglist窗口是最后一个窗口,则退出vim
    let Tlist_Exit_OnlyWindow=1
    "在右侧窗口中显示taglist窗口
    let Tlist_Use_Right_Window=1
    "在左侧窗口中显示taglist窗口
    "let Tlist_Use_Left_Windo =1  
    "启动vim后自动打开
     let Tlist_Auto_Open=1

    使用步骤如下:

    <CR> 跳转光标所指定义处
    o 以分隔窗口的形式跳转到定义处
    :help taglist.txt 帮助文件

    nerdtree:

    nerd类似windows下的资源浏览器,可以快速浏览并打开文件

    配置步骤如下:

    "浏览文件结构插件
    Plugin 'scrooloose/nerdtree'
    
    """"""NERDTree""""""""""
    "启动vim时自动打开NERDTree
    autocmd VimEnter * NERDTree
    " 设置NERDTree子窗口宽度
    let NERDTreeWinSize=32
    " 设置NERDTree子窗口位置
    let NERDTreeWinPos="left"
    " 显示隐藏文件
    let NERDTreeShowHidden=1
    " NERDTree 子窗口中不显示冗余帮助信息
    let NERDTreeMinimalUI=1
    " 删除文件时自动删除文件对应 buffer
    let NERDTreeAutoDeleteBuffer=1

    使用步骤如下:

    u 进入上层目录
    <CR>

    打开文件或目录

    打开或折叠目录树

    MiniBufExplorer:

    以标签的方式显示vim打开的缓存,使得可以快速切换

    配置步骤如下:

    "同时编辑buffer插件
    Plugin 'fholgado/minibufexpl.vim'
    " buffer 切换快捷键
    map <leader>n :bn<CR>
    map <leader>p :bp<CR>

    操作步骤如下:

    ;n (;为前面定义的<leader>),循环向下切换标签
    ;p 循环向上切换标签

    airline

    airline可以让状态栏显示更多有用的信息。

    配置步骤如下

    "增强状态栏
    Plugin 'vim-airline/vim-airline'
    Plugin 'vim-airline/vim-airline-themes'
    """"""""airline""""""""
    //总是显示状态栏
    set laststatus=2

     clang_complete

    c/c++代码补全,并且具有语法检查

    配置步骤如下:

    Plugin 'Rip-Rip/clang_complete'   
    
    let g:clang_complete_copen=1
    let g:clang_periodic_quickfix=1
    let g:clang_snippets=1
    let g:clang_user_options='-std=c99'
    let g:clang_complete_optional_args_in_snippets=0
    let g:clang_auto_select=1 
    let g:clang_close_preview=1
    let g:clang_complete_macros=1 

    配置编译器

    需要在当前工程的根目录下新建文件".clang_complete",并在其中加入常规配置

    比如:

    加入头文件路径:-I ./include

    ctrlp

    用于快速查找并打开文档

    配置步骤如下:

    "文件查找                                                                                                    
    Plugin 'ctrlpvim/ctrlp.vim' 
    
    map <leader>f :CtrlP<CR> 

     cscope

    查看符号被调用

    配置步骤如下:

    #安装cscope
    sudo apt-get install cscope
    
    #在.vimrc下配置
    if has("cscope")
    set csto=0
    set cst
    set nocsverb
    " add any database in current directory  
    if filereadable("cscope.out") 
     cs add cscope.out  
    " else add database pointed to by environment 
    elseif $CSCOPE_DB != ""  
     cs add $CSCOPE_DB 
    endif 
    set csverb
    endif 
    
    map <leader>c :cs find 3 <C-R>=expand("<cword>")<CR><CR>
    
    #在当前项目根目录下使用
    cscope -Rbq
    #生成cscope.out, cscope.in.out, cscope.po.out
    

    注意:要在cscope.out所在文件夹启动vim,否则用cscope可能会出现找不到文件的错误。

    0或者s —— 查找这个符号
    1或者g —— 查找这个定义
    2或者d —— 查找被这个函数调用的函数(们)
    3或者c —— 查找调用这个函数的函数(们)
    4或者t —— 查找这个字符串
    6或者e —— 查找这个egrep匹配模式
    7或者f —— 查找这个文件
    8或者i —— 查找#include这个文件的文件(们)

     懒人配置(spf13)

    #1.安装带有python以及lua的vim
    sudo apt install vim-nox
    
    #2.安装spf13
    curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh
    
    #3.安装youcompleteme
    #在home目录下,编辑文件“.vimrc.before.local”,并写入
    let g:spf13_bundle_groups=['general','youcompleteme','programming','misc']
    
    #4.退出后,重新启动vim,并运行命令
    :BundleInstall
    # 也可以在.vim/bundle下使用git拷贝
    git clone https://github.com/Valloric/YouCompleteMe
    
    #5.之后按照提示,反复安装需要的第三方包
    
    #6.进行编译
    ./install.py --clang-completer
    
    #7.在.vimrc.local中加入
    let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
    let g:ycm_confirm_extra_conf=0

     注意:

    需要在当前工程文件的根目录拷贝一份".ycm_extra_conf.py"文件,以对工程做单独设置。

  • 相关阅读:
    4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动
    3.操作系统简单介绍 操作系统发展历史 批处理分时系统 操作系统是什么 操作系统对文件的抽象 进程 虚拟内存是什么 操作系统作用 操作系统功能
    2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微处理 计算机
    1.计算机发展阶段 计算机发展历史 机械式计算机 机电式计算机 电子计算机 逻辑电路与计算机 二极管 电子管 晶体管 硅 门电路 计算机 电磁学计算机二进制
    如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇到错误怎么办
    eclipse svn插件卸载 重新安装 Subclipse卸载安装 The project was not built since its build path is incomplete This client is too old to work with the working copy at
    java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次
    windows资源管理器多标签打开 windows文件夹多标签浏览 浏览器tab页面一样浏览文件夹 clover win8 win10 报错 无响应问题怎么解决 clover卡死 clover怎么换皮肤
    批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
    不能ssh连接ubuntu linux 服务器 secureCRT不能ssh连接服务器 不能远程ssh连接虚拟机的ubuntu linux
  • 原文地址:https://www.cnblogs.com/KcMeterCEC/p/5424605.html
Copyright © 2011-2022 走看看