环境:Ubuntu 16.04
VIM:vim 8.x
VIM:vim 8.x
:~# vim --version
git clone https://github.com/vim/vim.git
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim
cd ~ && unzip ~/vim_plugin.zip
unzip ~/vim_plugin/vim_plugin.zip
unzip ~/vim_plugin/vim82.zip
tar -jxvf vim-8.2.tar.bz2
mkdir -p ~/.code_vim82
cd ./vim82
make distclean
//python配置
./configure --prefix=/home/weidonghui/.code_vim82 \
--enable-pythoninterp=yes \
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu
//python3配置
./configure --enable-multibyte \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu \
--enable-perlinterp=yes \
--with-python3-command=/usr/bin/python3 \
--prefix=/home/weidonghui/.code_vim82
sudo apt-get install libncurses5-dev
安装。checking for tgetent()... configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.
Or specify the name of the library with --with-tlib.
这个安装包已经把决大多数依赖包对放在里面了。但是不同的环境可能依赖会不一样,请认真的查看报错,百度解决。
Python安装配置情况
if compile and link flags for Python are sane... yes
出现这句话证明支持python,没有这句话,则安装出来的vim不支持python。
编译与安装
make
sudo make install
配置环境变量,我们直接vim --version
发现还是自己原来的vim,这是没有配置环境变量导致的。这里给出一种解决办法。适用于非root用户和root用户。在~/.bashrc中添加vim的环境路径,注意必须添加到$PATH的前面,这样打开vim就优先找自己安装的版本。注意:关闭窗口在打开才有效
。
vim ~/.bashrc
export PATH="/home/weidonghui/.code_vim82/bin/:$PATH"
关闭窗口在打开才有效
。cd ~/.code_vim82/bin
ln -s vim vi
"通用配置
"通用配置
syntax on " 开启语法高亮
colorscheme peachpuff "vim配置方案
set number " 显示行号
set hls "搜索时高亮显示被找到的文本
set scrolloff=3 " 上下可视行数
set incsearch " 搜索时高亮显示被找到的文本
set ignorecase "搜索忽略大小写
set enc=utf-8 "编码设置
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 "编码自动识别
set mouse=n "鼠标普通模式
" set cursorline "选中行出现下划线
map qq :qa!<CR> "多窗口不保存关闭
map ww :wqa!<CR> "多窗口保存关闭
"vim自动打开跳到上次的光标位置
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
set nocompatible "设置backspace的工作方式
set backspace=indent,eol,start " 设置backspace的工作方式
map <F5> :set listchars=tab:>-,trail:-<CR> :set list<CR> " 显示空格和tab
map <F6> :set list!<CR> " 取消显示空格和tab
git clone https://github.com/junegunn/vim-plug.git ~/.vim/autoload
cd ~ && unzip ~/vim_plugin.zip
unzip ~/vim_plugin/vim-plug-master.zip
mkdir -p ~/.vim/autoload
cp -rf vim-plug-master/plug.vim ~/.vim/autoload/
call plug#begin('~/.vim/plugged')
"plug插件管理,全异步安装,不仅支持在线安装,更支持下载好的离线包直接安装。
"且安装完后,可以注释掉相关指令很方便的关闭对应插件。下面基本都是离线安装的例子
"Plug 'vim-scripts/vim-gutentags'
call plug#end()
taglist 依赖ctags。离线的同学搜一下自行安装。
sudo apt-get install ctags
git clone https://github.com/vim-scripts/taglist.vim
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/taglist.vim.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/taglist.vim' "Tlist标签列表插件
call plug#end()
"Tlist插件配置
let Tlist_Show_One_File = 1 " 只显示当前文件的tags
"let Tlist_Auto_Open = 1 " 打开vim自动打开Tlist
"let Tlist_GainFocus_On_ToggleOpen = 1 " 打开Tlist窗口时,光标跳到list窗口
let Tlist_Exit_OnlyWindow = 1 " 如果Tlist窗口是最后一个窗口则退出Vim
let Tlist_Use_Left_Window = 1 " 在左侧窗口中显示
let Tlist_File_Fold_Auto_Close = 1 " 自动折叠
let Tlist_Auto_Update = 1 " 自动更新
" <F4> 打开 Tlist 窗口,在左侧栏显示
map <F4> :TlistToggle<CR>
git clone https://github.com/preservim/nerdcommenter
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/nerdcommenter-master.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/nerdcommenter-master' "nerdcommenter快速注释插件
call plug#end()
"nerdcommenter插件快速注释
let g:NERDSpaceDelims = 1 " 在注释符号后加一个空格
let g:NERDCompactSexyComs = 1 " 紧凑排布多行注释
let g:NERDDefaultAlign = 'left' " 逐行注释左对齐
let g:NERDAltDelims_java = 1 " JAVA 语言使用默认的注释符号
let g:NERDCustomDelimiters = {'c': {'left': '/*', 'right': '*/'}} " C 语言注释符号
let g:NERDCommentEmptyLines = 1 " 允许空行注释
let g:NERDTrimTrailingWhitespace = 1 " 取消注释时删除行尾空格
let g:NERDToggleCheckAllLines = 1 " 检查选中的行操作是否成功
map <F12> <plug>NERDCommenterSexy " 选中注释
map <c-F12> <plug>NERDCommenterUncomment " 选中取消注释
git clone https://github.com/vim-airline/vim-airline.git
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/vim-airline-master.zip
export TERM=xterm-256color
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/vim-airline-master' "airline状态栏
call plug#end()
"airline状态栏配置
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = '|'
let g:airline#extensions#tabline#left_alt_sep = '|'
let g:airline#extensions#tabline#formatter = 'unique_tail'
map <c-Left> :bp<CR> " 切换到上一个
map <c-Right> :bn<CR> " 切换到下一个
map <F2> :bd<CR> " 关闭当前窗口
map 11 :b1<CR> " 切换到编号1
map 22 :b2<CR> " 切换到编号2
map 33 :b3<CR> " 切换到编号3
map 44 :b4<CR> " 切换到编号4
map 55 :b5<CR> " 切换到编号5
map 66 :b6<CR> " 切换到编号6
map 77 :b7<CR> " 切换到编号7
map 88 :b8<CR> " 切换到编号8
map 99 :b9<CR> " 切换到编号9
map 00 :b10<CR> " 切换到编号10
git clone https://github.com/ludovicchabant/vim-gutentags.git
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/vim-gutentags-master.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/vim-gutentags-master' "gutentags异步tags插件
call plug#end()
" " 配置 ctags 的参数 "
map <c-]> g<c-]> "ctags跳转不自动选择
" gutentags 搜索工程目录的标志,当前文件路径向上递归直到碰到这些文件/目录名
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']
" 所生成的数据文件的名称
let g:gutentags_ctags_tagfile = '.tags'
" 同时开启 ctags 和 gtags 支持:
let g:gutentags_modules = []
if executable('ctags')
let g:gutentags_modules += ['ctags']
endif
if executable('gtags-cscope') && executable('gtags')
let g:gutentags_modules += ['gtags_cscope']
endif
" 将自动生成的 ctags/gtags 文件全部放入 ~/.cache/tags目录中,避免污染工程目录
let g:gutentags_cache_dir = expand('~/.cache/tags')
" 配置 ctags 的参数,老的 Exuberant-ctags 不能有--extra=+q,注意
let g:gutentags_ctags_extra_args = ['--fields=+niazS']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
" 如果使用 universal ctags 需要增加下面一行,老的Exuberant-ctags 不能加下一行
"let g:gutentags_ctags_extra_args += ['--output-format=e-ctags']
" 禁用 gutentags 自动加载 gtags 数据库的行为
let g:gutentags_auto_add_gtags_cscope = 0
git clone https://github.com/Yggdroot/LeaderF.git
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/LeaderF-master_4991.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/LeaderF-master' "LeaderF模糊查找插件
call plug#end()
"LeaderF 模糊文件查找配置
let g:Lf_ShortcutF = '' " 文件快速搜索
" 函数,宏,变量快速搜索
noremap <c-f> :LeaderfTag<cr>
let g:Lf_StlSeparator = { 'left': '', 'right': '', 'font': '' }
let g:Lf_RootMarkers = ['.project', '.root', '.svn', '.git']
let g:Lf_WorkingDirectoryMode = 'Ac'
let g:Lf_WindowHeight = 0.30
let g:Lf_CacheDirectory = expand('~/.vim/cache')
let g:Lf_ShowRelativePath = 0
let g:Lf_HideHelp = 1
let g:Lf_StlColorscheme = 'powerline'
let g:Lf_PreviewResult = {'Function':0, 'BufTag':0}
命令 | 描述 |
---|---|
<ESC> | 退出LeaderF |
<C-F> | 在完整路径搜索模式和仅名称搜索模式之间切换 |
<C-J> | 在结果窗口中向下移动光标 |
<C-K> | 在结果窗口中向上移动光标 |
<Up>/<Down> | 从历史回忆起上一个/下一个输入模式 |
<C-X> | 在水平分割窗口打开 |
<C-]> | 在垂直分割窗口打开 |
<C-T> | 在新标签页中打开 |
https://ftp.gnu.org/pub/gnu/global/global-6.6.4.tar.gz
git clone https://github.com/skywind3000/gutentags_plus.git
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
tar -xf ~/vim_plugin/global-6.6.4.tar.gz
./configure --with-sqlite3 --prefix=/home/weidonghui/.gtags_code
# gtags可以使用Sqlite3作为数据库, 在编译时需要加这个参数
# 将global安装到指定路径,必须是绝对路径
make -j
sudo make install
vim ~/.bashrc
export PATH="/home/weidonghui/.gtags_code/bin:/home/weidonghui/.gtags_code/lib/gtags:/home/weidonghui/.gtags_code/share/gtags:/home/weidonghui/.gtags_code/share/info:/home/weidonghui/.gtags_code/share/man/man1:/home/weidonghui/.gtags_code/share/man/man5:$PATH"
virtual-machine:~$ global --version
global (GNU GLOBAL) 6.6.4
Powered by Berkeley DB 1.85 and SQLite3 3.8.7.1.
Copyright (c) 1996-2019 Tama Communications Corporation
License GPLv3+: GNU GPL version 3 or later <http://www.gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
virtual-machine:~$
mkdir -p ~/.vim/plugged/global-6.6.4/plugin
cd ~/.vim/plugged/global-6.6.4
cp -rf *.vim plugin/
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/global-6.6.4' "gtags引用跳转
call plug#end()
let g:Lf_GtagsAutoGenerate = 1
let g:Lf_Gtagslabel = 'native-pygments'
" let g:Lf_Gtagsconf = '/usr/local/share/gtags/gtags.conf'
let g:Lf_Gtagsconf = '/home/weidonghui/.gtags_code/share/gtags/gtags.conf'
noremap <leader>fr :<C-U><C-R>=printf("Leaderf! gtags -r %s --auto-jump", expand("" ))<CR><CR>
noremap <leader>fd :<C-U><C-R>=printf("Leaderf! gtags -d %s --auto-jump", expand("" ))<CR><CR>
noremap <leader>fo :<C-U><C-R>=printf("Leaderf! gtags --recall %s", "")<CR><CR>
noremap <leader>fn :<C-U><C-R>=printf("Leaderf gtags --next %s", "")<CR><CR>
noremap <leader>fp :<C-U><C-R>=printf("Leaderf gtags --previous %s", "")<CR><CR>
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/gutentags_plus-master.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/gutentags_plus-master' "gutentags_plus异步ctags插件
call plug#end()
"启用gtags模块
let g:gutentags_modules = ['ctags','gtags_cscope']
"配置项目根标记。
let g:gutentags_project_root = ['.root']
"在我的缓存目录中生成日期数据库,防止gtags文件污染我的项目
let g:gutentags_cache_dir = expand('〜/ .cache / tags')
"搜索后将焦点更改为quickfix窗口(可选)。
let g:gutentags_plus_switch = 1
命令 | 描述 |
---|---|
查看光标下符号的定义 | |
查看光标下符号的引用 | |
查看有哪些函数调用了该函数 | |
查找光标下的文件 | |
查找哪些文件 include 了本文件 |
git clone https://github.com/octol/vim-cpp-enhanced-highlight.git
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/vim-cpp-enhanced-highlight-master.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/vim-cpp-enhanced-highlight-master' "c/c++ 语法高亮
call plug#end()
" cpp-enhanced-highlight c/c++ 语法高亮配置
" 默认情况下,不突出显示类范围。启用设置
let g:cpp_class_scope_highlight = 1
" 默认情况下,成员变量突出显示为禁用状态。启用设置
let g:cpp_member_variable_highlight = 1
" 默认情况下,在声明中高亮显示类名。启用设置
let g:cpp_class_decl_highlight = 1
" POSIX功能的突出显示默认情况下处于禁用状态。启用设置
let g:cpp_posix_standard = 1
" 有两种突出显示模板功能的方法。要么
let g:cpp_experimental_simple_template_highlight = 1
" 在大多数情况下都可以使用,但是在大文件上可能会有点慢。替代设置
let g:cpp_experimental_template_highlight = 1
" 这是一个较快的实现,但是在某些极端情况下它不起作用。
" 注意:众所周知,C ++模板语法很难解析,因此不要指望此功能是完美的。
" 库概念的突出显示由
let g:cpp_concepts_highlight = 1
" 这将突出显示关键字的概念,要求以及标准库中的所有命名要求(例如DefaultConstructible)
" 可以通过以下方式禁用突出显示用户定义的功能
let g:cpp_no_function_highlight = 1
vim的自动补全有很多种强大入YouCompleteMe不过在离线状态下比较难安装目前还在研究目前找到一个替代品AutoComplPop
效果也不错,安装方便效果也不错。
git clone https://github.com/vim-scripts/AutoComplPop.git
cd ~ && unzip ~/vim_plugin.zip
cd ~/.vim/plugged
unzip ~/vim_plugin/AutoComplPop-master.zip
call plug#begin('~/.vim/plugged')
Plug 'vim-scripts/AutoComplPop-master' "查字典补全
call plug#end()