vim配置及常用插件安装
前言
作为一个程序员,一个常用的工具就是编辑器,常用的编辑器有Sublime Text、Emacs、Vim、Source Insight、Atom、TextMate.
引用知乎大佬刘尚奇的言论
中国范围,08年以前Vim和Emacs认知度较低,两基友相爱相杀,流行度不相上下;此后Vim一跃领先,在11年后以压倒性优势成为最流行的editor;Emacs份额也稳中有升,并在12年后迎来更广的认知度和流行度;Sublime Text的趋势跟Worldwide相似但略有delay,流行度在13年超越Emacs;TextMate一直作为小众的存在,从Sublime Text诞生起就被超越。
可以看出vim仍是目前的主流编辑器,它流行的一个主要原因就是可扩展。配上各种插件就可以实现非常炫酷的功能。
本人的环境
系统:Centos7
vim版本:8.0
插件列表
- Vundle
管理vim插件的插件 ,其特色在于使用git来管理插件,更新方便。 - Nerdtree
树形目录插件,可以方便查看目录 - DoxygenToolkit
用它可以很方便地添加 Doxygen 风格的注释,可以节省大量时间和精力,提高写代码的效率。 - Taglist
TagList插件是一款基于ctags,在vim代码窗口旁以分割窗口形式显示当前的代码结构概览,增加代码浏览的便利程度的vim插件。 - nerdcommenter
快速注释插件,可以很方便的注释代码 - vim-airline
状态栏美化插件 - YouCompleteMe
代码自动补全插件
最终效果
1. 安装/升级Vim
基本所有的操作系统都会内置vim,但是YouCompleteMe插件要求vim版本7.4以上,所以我升级到了vim8.0,centos的包管理工具没有8.0的版本,需要进行手动编译安装。若vim版本大于7.4可忽略本步。
sudo yum install ncurses-devel
wget https://github.com/vim/vim/archive/master.zip
unzip master.zip
cd vim-master
cd src/
./configure --with-features=huge -enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config --prefix=/usr/local/
sudo make
sudo make install
export PATH=/usr/local/bin:$PATH
vim --version
2. 安装Vundle
若没有安装git
sudo yum install -y git
下载vundle
mkdir ~/.vim/bundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
打开配置文件
vim ~/.vimrc
添加以下代码
set nocompatible " 去除VI一致性,必须要添加
filetype off " 必须要添加" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
Plugin 'ascenator/L9', {'name': 'newL9'}" 你的所有插件需要在下面这行之前
call vundle#end() " 必须
filetype plugin indent on " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
用vim打开一个新的文件,执行
:PluginInstall
显式Done后安装完毕
3. 安装 Nerdtree
打开vim的配置文件
vim ~/.vimrc
添加代码Plugin ‘scrooloose/nerdtree’在这行之前
" 你的所有插件需要在下面这行之前
call vundle#end() " 必须
添加后
Plugin 'scrooloose/nerdtree'
" 你的所有插件需要在下面这行之前
call vundle#end() " 必须
在vim中执行
:PluginInstall
在配置文件中添加以下代码
map <leader>t :NERDTreeToggle<CR>
"map <C-n> :NERDTreeToggle<CR>
" 显示行号
let NERDTreeShowLineNumbers=1
let NERDTreeAutoCenter=1
" 是否显示隐藏文件
let NERDTreeShowHidden=1
" 设置宽度
let NERDTreeWinSize=30
" 在终端启动vim时,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1
" 忽略一下文件的显示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
" 显示书签列表
let NERDTreeShowBookmarks=1" vim不指定具体文件打开是,自动使用nerdtree
" autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree |endif
" 当vim打开一个目录时,nerdtree自动使用
" autocmd StdinReadPre * let s:std_in=1
" autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) &&
"!exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif" 当vim中没有其他文件,值剩下nerdtree的时候,自动关闭窗口
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
4. 安装DoxygenToolkit
在vim配置文件中call vundle#end() 之前添加
Plugin 'DoxygenToolkit.vim'
在call vundle#end() 之后添加
let g:DoxygenToolkit_briefTag_funcName = "yes"
" for C++ style, change the '@' to '\'
let g:DoxygenToolkit_commentType = "C++"
let g:DoxygenToolkit_briefTag_pre = "\\brief "
let g:DoxygenToolkit_templateParamTag_pre = "\\tparam "
let g:DoxygenToolkit_paramTag_pre = "\\param "
let g:DoxygenToolkit_returnTag = "\\return "
let g:DoxygenToolkit_throwTag_pre = "\\throw " " @exception is also valid
let g:DoxygenToolkit_fileTag = "\\file "
let g:DoxygenToolkit_dateTag = "\\date "
let g:DoxygenToolkit_authorTag = "\\author "
let g:DoxygenToolkit_versionTag = "\\version "
let g:DoxygenToolkit_blockTag = "\\name "
let g:DoxygenToolkit_classTag = "\\class "
let g:DoxygenToolkit_authorName = "suntangji, suntangj2016i@gmail.com"
let g:doxygen_enhanced_color = 1
"let g:load_doxygen_syntax = 1
nmap <F4> :DoxAuthor<cr>
在vim中执行
:PluginInstall
5. 安装Taglist
taglist依赖ctags,需要进行安装
sudo yum install -y ctags
在vim配置文件中call vundle#end() 之前添加
Plugin 'taglist.vim'
在call vundle#end() 之后添加
let Tlist_Ctags_Cmd='ctags'
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_WinWidt =28 "设置taglist的宽度
let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window=1 "在右侧窗口中显示taglist窗口
"let Tlist_Use_Left_Windo =1
map <leader>l :Tlist<CR>
在vim中执行
:PluginInstall
6. 安装nerdcommenter
在vim配置文件中call vundle#end() 之前添加
Plugin 'scrooloose/nerdcommenter'
在vim中执行
:PluginInstall
7. 安装vim-airline
在vim配置文件中call vundle#end() 之前添加
Plugin 'bling/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
在call vundle#end() 之后添加
let g:airline_theme="luna"
"这个是安装字体后 必须设置此项"
"let g:airline_theme="kolor"
let g:airline_powerline_fonts = 1
set laststatus=2 "永远显示状态栏
set t_Co=256 "在windows中用xshell连接打开vim可以显示色彩
"打开tabline功能,方便查看Buffer和切换,这个功能比较不错"
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1 "设置切换Buffer快捷键"
nnoremap <C-N> :bn<CR>
nnoremap <C-P> :bp<CR>" 关闭状态显示空白符号计数,这个对我用处不大"
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#whitespace#symbol = '!'
" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
在vim中执行
:PluginInstall
初次安装以后打开Vim,若发现状态栏会出现乱码,这时有两种解决方案,一种是安装powerline字体或者Nerd Fonts实现字体显示,另一种是用unicode字符替代,对于第一种方案,字体的安装请参考github相应主页上的说明
8. 安装YouCompleteMe
该插件需要手动编译
首先安装依赖
sudo yum install -y python-dev python3-dev gcc cmake
方式一 通过Vundle下载源码(不推荐)
该方式下载时间较长,不会进行仓库完备性检查
在vim配置文件中call vundle#end() 之前添加
Plugin 'Valloric/YouCompleteMe'
在vim中执行
:PluginInstall
方式二 通过git 下载源码
git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe
git submodule update --init --recursive
进行编译
cd ~/.vim/bundle/YouCompleteMe
sudo yum upgrade
sudo ./install.py --clang-completer
安装完成后将.yum_extra_conf.py复制一份到 ~/
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/
打开.yum_extra_conf.py,在flags中添加以下代码
'-isystem',
'/usr/include',
'-isystem',
'/usr/include/c++/',
'-isystem',
'/usr/include/i386-linux-gnu/c++'
把flags中‘home/xxx’更改为’home/你的用户名’
打开配置文件.vimrc添加
let g:ycm_global_ycm_extra_conf='~/.ycm_extra_conf.py' "设置全局配置文件的路径
let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全
let g:ycm_confirm_extra_conf=0 " 打开vim时不再询问是否加载ycm_extra_conf.py配置
let g:ycm_key_invoke_completion = '<C-a>' " ctrl + a 触发补全
set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
至此,大功告成!
vim配置及常用插件安装相关推荐
- vim配置之taglist插件安装
上次说了不带插件的vim配置,今天补充两个,来日方长,不定期更新: 首先看一个路径: 下载ctags,将其中的ctags.exe复制到上边目录下边: 地址:https://sourceforge.ne ...
- vim常用插件安装及使用
vim常用插件安装及使用 vim常用插件安装 一. Vim8内置插件管理方案 二.vim插件推荐及安装 2.1 NERDTree插件安装及使用 2.1.1 下载NERDTree插件 2.1.2 NER ...
- brew 无法安装iterm2_Mac系统iTerm2+oh-my-zsh配置及常用插件
iTerm2,是目前Mac平台最好用,功能最强大的终端软件,可以说是Mac系统下终端利器.Mac系统默认使用的终端为bash(MacOS Catalina开始,默认终端已经变成zsh):zsh被喻为& ...
- IDEA 2022 常用 插件 安装 与 全局配置 教程 大全
IDEA 2022 常用 插件 安装 与 全局配置 教程 大全 文章目录 IDEA 2022 常用 插件 安装 与 全局配置 教程 大全 一. 安装必备插件 1. Codota 代码智能提示插件 2. ...
- Fedora 28 系统基础配置以及常用软件安装方式
实验说明: 很多人说Linux很难用,很难上手,其实不然,倘若不玩游戏,其实很多发行版Linux都可以成为主力系统,就比如本章要讲的 Fedora 28.本章会从镜像来源.系统安装.基础配置和常用软件 ...
- 【centos8服务器的开发环境配置及常用工具安装】
centos8服务器的开发环境配置及常用工具安装(不定时更新) 文章目录 centos8服务器的开发环境配置及常用工具安装(不定时更新) 一.安装yum 二.安装unzip命令 三.安装jdk8 四. ...
- Sublime Text 3便携版下载安装和常用插件安装--顺便解决报错An error occured installing和no packages available for install
文章目录 Sublime Text 3便携版下载安装和常用插件安装 1.Sublime Text 3便携版下载: 2.sublime 插件控制器(Package Control)安装 2.1离线安装P ...
- IDEA常用配置和常用插件及常用快捷键
欢迎转载,转载请注明出处! 知乎:迷人滴海嘉 思否:迷人滴海嘉 简书:迷人滴海嘉 前言 本人使用 IntelliJ IDEA 两年多了,觉得还是非常好用的.在使用过程中总结了个人的IDEA常用配置和常 ...
- 2080Ti深度学习环境配置及常用软件安装
2080Ti深度学习环境配置及常用软件安装 ubuntu 16.04 双系统的安装(已有window10系统) 显卡驱动安装 tensorflow安装 teamviewer安装 pycharm安装 m ...
最新文章
- centos7配置 console口_玩转KVM-一招打开vm的console口
- 学习JavaScript你必须掌握的8大知识点
- java的lookAndfeel_java-LookAndFeel行为之间的区别
- 灰度图像的8位平面分解
- ssm使用全注解实现增删改查案例——EmpServiceImpl
- 视频光端机各种视频接口的传输距离是多少?
- Java Spring 后端项目搭建
- C++ STL容器值set
- hessianphp java_hessian 在PHP中的使用
- linux服务器配置试卷,2016年Linux认证模拟练习题及答案
- Matlab适配器模式
- 在honeypack中启用HMR
- C# 多线程BackgroundWorker
- 实战!使用Docker安装OnlyOffice
- c语言程序怎样输出一个图形,用c语言如何输出并显示一个序列图形
- Postman下载与安装详细步骤
- 【DNSPOD】利用DNSPod实现动态域名解析【DDNS】
- Storm概念详解和工作原理,topology、spout、bolt的细节和API讲解之一
- 基于ssm整合的网上书城
- 虚拟机怎么安装软件 Mac虚拟机怎么安装软件