vim下的c++运行环境搭建教程
程序员文章站
2022-06-24 20:34:21
vim的安装
vim的安装最好是上github或者官网下载安装, 直接使用apt-get等方式安装的有可能是阉割版导致不支持python等,会使得部分插件无法使用.
最新版vi...
vim的安装
vim的安装最好是上github或者官网下载安装, 直接使用apt-get等方式安装的有可能是阉割版导致不支持python等,会使得部分插件无法使用.
最新版vim 8.0的安装:从github获取vim
git clone https://github.com/vim/vim.git
如果获取了一段时间后没有安装,可以更新vim
cd vim git pull
进入安装目录
cd src make distclean #如果你以前编译过Vim
设置vim添加python支持
./configure --with-features=huge --enable-python3interp --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu/ --enable-rubyinterp --enable-luainterp --enable-perlinterp --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu/ --enable-multibyte --enable-cscope --prefix=/usr/local/vim/
编译安装
make sudo make install使用vundle进行插件管理
vundle是一个插件管理器,vim上的所有额外功能都是由插件提供的,在安装众多插件的时候要先下载vundle后, 就可以批量安装管理插件了
vundle安装
( 确保~/.vim/bundle路径存在,不存在则建立)
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim修改配置文件~/.vimrc如下
" ***************** 全局设置 ************** " "保持文件上次打开的位置 au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif " 开启文件类型侦测 filetype on " 根据侦测到的不同类型加载对应的插件 filetype plugin on " 自动缩进 filetype indent on " 开启语法高亮功能 syntax enable " 允许用指定语法高亮配色方案替换默认方案 syntax on set nocompatible "关闭兼容模式 set incsearch "开启实时搜索功能 set ignorecase "搜索忽略大小写 set wildmenu "vim命令自动补全 set autoread "文件自动更新 set gcr=a:block-blinkon0 "禁止关闭闪烁 set laststatus=2 "总是显示状态栏 set ruler "显示光标位置 set number "显示行号 set cursorline "高亮显示当前行 "set cursorcolumn "高亮显示当前列 set hlsearch "高亮显示搜索结果 " set nowrap "禁止折行 set backspace=2 "回退键生效 "set backspace=indent,eol,start set novisualbell " 禁止显示滚动条 set guioptions-=l set guioptions-=L set guioptions-=r set guioptions-=R " 禁止显示菜单和工具条 set guioptions-=m set guioptions-=T " 将制表符扩展为空格 set expandtab " 设置编辑时制表符占用空格数 set tabstop=4 " 设置格式化时制表符占用空格数 set shiftwidth=4 " 让 vim 把连续数量的空格视为一个制表符 set softtabstop=4 " 基于缩进或语法进行代码折叠 set foldmethod=syntax " 启动 vim 时关闭折叠代码 set nofoldenable " 交互式打开shell set shell=bash\ -i " *************** 设置全局快捷键 ***************** " 定义快捷键的前缀,即 "let mapleader="\" let mapleader="'" " 设置快捷键将选中文本块复制至系统剪贴板 vnoremap y "+y " 设置快捷键将系统剪贴板内容粘贴至 vim nmap p "+p " 定义快捷键关闭当前分割窗口 nmap q :q " 定义快捷键保存当前窗口内容 nmap w :w " 定义快捷键保存所有窗口内容并退出 vim "nmap WQ :wa:q " 不做任何保存,直接退出 vim " YCM 补全菜单配色 " 菜单 "highlight Pmenu ctermfg=2 ctermbg=3 guifg=#005f87 guibg=#EEE8D5 " 选中项 "highlight PmenuSel ctermfg=2 ctermbg=3 guifg=#AFD700 guibg=#106900 "设置ycm的pyhton编译器 let g:ycm_server_python_interpreter='/usr/bin/python' " 补全功能在注释中同样有效 let g:ycm_complete_in_comments=1 " 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示 let g:ycm_confirm_extra_conf=0 " 开启 YCM 标签补全引擎 let g:ycm_collect_identifiers_from_tags_files=1 " 引入 C++ 标准库tags set tags+=/data/misc/software/misc./vim/stdcpp.tags " YCM 集成 OmniCppComplete 补全引擎,设置其快捷键 "inoremap ; " 补全内容不以分割子窗口形式出现,只显示补全列表 set completeopt-=preview " 从第一个键入字符就开始罗列匹配项 let g:ycm_min_num_of_chars_for_completion=1 " 禁止缓存匹配项,每次都重新生成匹配项 let g:ycm_cache_omnifunc=0 " 语法关键字补全 let g:ycm_seed_identifiers_with_syntax=1 let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py' "let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' """ color settings """ Solarized """ "let g:solarized_termcolors=16 set t_Co=256 if has("gui_running") set guioptions=gR set mousemodel=popup set background=light ""hi LineNr cterm=bold guibg=black guifg=white ""hi CursorLine cterm=none ctermbg=lightgray ctermfg=none ""hi CursorColumn cterm=none ctermbg=lightgray ctermfg=none else set background=dark ""hi LineNr cterm=bold ctermbg=black ctermfg=white ""hi CursorLine cterm=none ctermbg=darkgray ctermfg=none ""hi CursorColumn cterm=none ctermbg=darkgray ctermfg=none endif colorscheme solarized "colorscheme default " indent guides "let g:indent_guides_enable_on_vim_startup=1 " 从第二层开始可视化显示缩进 let g:indent_guides_start_level=2 "let g:indent_guides_auto_colors = 0 "hi IndentGuidesOdd guibg=red ctermbg=3 "hi IndentGuidesEven guibg=green ctermbg=4 " 色块宽度 let g:indent_guides_guide_size=1 " 快捷键 i 开/关缩进可视化 noremap sj :IndentGuidesToggle "nmap Q :qa! " syntastic "syntastic "设置error和warning的标志 let g:syntastic_enable_signs = 1 let g:syntastic_error_symbol='?' let g:syntastic_warning_symbol='?' "总是打开Location List(相当于QuickFix)窗口,如果你发现syntastic因为与其他插件冲突而经常崩溃,将下面选项置0 let g:syntastic_always_populate_loc_list = 1 "自动打开Locaton List,默认值为2,表示发现错误时不自动打开,当修正以后没有再发现错误时自动关闭,置1表示自动打开自动关闭,0表示关闭自动打开和自动关闭,3表示自动打开,但不自动关闭 let g:syntastic_auto_loc_list = 1 "修改Locaton List窗口高度 let g:syntastic_loc_list_height = 5 "打开文件时自动进行检查 let g:syntastic_check_on_open = 1 "自动跳转到发现的第一个错误或警告处 let g:syntastic_auto_jump = 1 "进行实时检查,如果觉得卡顿,将下面的选项置为1 let g:syntastic_check_on_wq = 0 "高亮错误 let g:syntastic_enable_highlighting=1 "让syntastic支持C++11 let g:syntastic_cpp_checkers = ['g++'] let g:syntastic_cpp_compiler = 'g++' let g:syntastic_cpp_compiler_options = '-std=c++11' "设置pyflakes为默认的python语法检查工具 let g:syntastic_python_checkers = ['pyflakes'] "修复syntastic使用:lnext和:lprev出现的跳转问题,同时修改键盘映射使用sn和sp进行跳转 function! LocationPrevious() try lprev catch /^Vim\%((\a\+)\)\=:E553/ llast endtry endfunction function! LocationNext() try lnext catch /^Vim\%((\a\+)\)\=:E553/ lfirst endtry endfunction nnoremapLocationPrevious :exe 'call LocationPrevious()' nnoremap LocationNext :exe 'call LocationNext()' nmap sp LocationPrevious nmap sn LocationNext "关闭syntastic语法检查, 鼠标复制代码时用到, 防止把错误标志给复制了 nnoremap ec :SyntasticToggleMode function! ToggleErrors() let old_last_winnr = winnr('$') lclose if old_last_winnr == winnr('$') " Nothing was closed, open syntastic error location panel Errors endif endfunction " 依次遍历子窗口 nnoremap nw " 跳转至右方的窗口 nnoremap l l " 跳转至左方的窗口 nnoremap h h " 跳转至上方的子窗口 nnoremap k k " 跳转至下方的子窗口 nnoremap j j " 定义快捷键在结对符之间跳转 nmap M % nnoremap g nnoremap b " ************** 插件管理与设置 ************ " " vundle 环境设置 filetype off set rtp+=~/.vim/bundle/Vundle.vim " vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间 call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'Lokaltog/vim-powerline' "status 美化 Plugin 'octol/vim-cpp-enhanced-highlight' "对c++语法高亮增强 Plugin 'kshenoy/vim-signature' "书签可视化的插件 Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines' "书签行高亮 Plugin 'majutsushi/tagbar' "taglist的增强版,查看标签,依赖于ctags Plugin 'scrooloose/nerdcommenter' "多行注释,leader键+cc生成, leader+cu删除注释 Plugin 'scrooloose/nerdtree' "文件浏览 Plugin 'Valloric/YouCompleteMe' "自动补全 Plugin 'kien/ctrlp.vim' "搜索历史打开文件,在命令行模式下按ctrl+p触发 Plugin 'vim-scripts/grep.vim' "在命令行模式使用grep命令,:Grep Plugin 'Lokaltog/vim-easymotion' "快速跳转,按两下leader键和f组合 Plugin 'vim-scripts/ShowTrailingWhitespace.git' "高亮显示行尾的多余空白字符 Plugin 'vim-scripts/indentpython.vim.git' Plugin 'vim-scripts/Solarized.git' "主题方案 Plugin 'nathanaelkane/vim-indent-guides.git' "缩进对齐显示 "Plugin 'vim-scripts/indexer.tar.gz' "自动生成标签 "Plugin 'vim-scripts/DfrankUtil' "indexer 依赖 "Plugin 'vim-scripts/vimprj' "indexer 依赖 Plugin 'davidhalter/jedi-vim' "python 补全,不依赖于tags,但比较慢,可以使用indexer替换,但不能跳转项目外 Plugin 'vim-scripts/Markdown' Plugin 'tpope/vim-surround' Plugin 'ekalinin/Dockerfile.vim' Plugin 'scrooloose/syntastic' " 插件列表结束 "call vundle#end() filetype on " Powerline 设置 " 设置状态栏主题风格 let g:Powerline_colorscheme='solarized256' " 设置tagbar " 设置 tagbar 子窗口的位置出现在主编辑区的左边 let tagbar_left=1 " " 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag nnoremap t :TagbarToggle " " 设置标签子窗口的宽度 let tagbar_width=32 " " tagbar 子窗口中不显示冗余帮助信息 let g:tagbar_compact=1 " " 设置 ctags 对哪些代码标识符生成标签 " signature设置 let g:SignatureMap = { \ 'Leader' : "m", \ 'PlaceNextMark' : "m,", \ 'ToggleMarkAtLine' : "m.", \ 'PurgeMarksAtLine' : "m-", \ 'DeleteMark' : "dm", \ 'PurgeMarks' : "mda", \ 'PurgeMarkers' : "m", \ 'GotoNextLineAlpha' : "']", \ 'GotoPrevLineAlpha' : "'[", \ 'GotoNextSpotAlpha' : "`]", \ 'GotoPrevSpotAlpha' : "`[", \ 'GotoNextLineByPos' : "]'", \ 'GotoPrevLineByPos' : "['", \ 'GotoNextSpotByPos' : "mn", \ 'GotoPrevSpotByPos' : "mp", \ 'GotoNextMarker' : "[+", \ 'GotoPrevMarker' : "[-", \ 'GotoNextMarkerAny' : "]=", \ 'GotoPrevMarkerAny' : "[=", \ 'ListLocalMarks' : "ms", \ 'ListLocalMarkers' : "m?" \ } " 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list nmap f :NERDTreeToggle " 设置NERDTree子窗口宽度 let NERDTreeWinSize=32 " 设置NERDTree子窗口位置 let NERDTreeWinPos="right" " 显示隐藏文件 let NERDTreeShowHidden=1 " NERDTree 子窗口中不显示冗余帮助信息 let NERDTreeMinimalUI=1 " 删除文件时自动删除文件对应 buffer let NERDTreeAutoDeleteBuffer=1
在vim的命令行模式下执行下列命令后,写在脚本中的插件就会被依次安装
:BundleInstall
推荐阅读
-
Python环境下搭建属于自己的pip源的教程
-
Docker下搭建一个JAVA Tomcat运行环境的方法
-
Win8.1系统下搭建IIS8.5+PHP5.5.4运行环境教程
-
Ubuntu服务器下搭建php运行环境的方法
-
ionic 3.0+ 项目搭建运行环境的教程
-
[PHP] CentOS下搭建下PHP的运行环境
-
Windows7下安装 Nodejs 并在 WebStorm 9.0.1 下搭建编译 LESS 环境的图文教程
-
Ubuntu16.04环境下搭建FTP服务器的教程
-
ubuntu下Android开发环境的搭建:eclipse+SDK详细安装教程+常见问题及其解决方案
-
CentOS 7.x下的LEMP环境搭建详细教程