详细过程可参考原始的项目文档。
首先可以在~/.vim/.vimrc中设置vim编辑器的一些基本属性
" 基本配置
" 设置行号
set number
" 语法高亮。自动识别代码,使用多种颜色表示
syntax enable
" 选择颜色主题(已经下载好并放到~/.vim/colors文件夹下)
colorscheme badwolf
" 支持使用鼠标
set mouse=a
" 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致
set autoindent
" 按下Tab键后,vim显示的空格数
set tabstop=4
" normal模式下,>>增加一级缩进、<<取消一级缩进、==取消全部缩进时,每一级缩进的空格数
set shiftwidth=4
" 自动将Tab转为空格(防止Tab键在不同编辑器缩进不一致导致问题)
set expandtab
" Tab转为多少个空格
set softtabstop=4
" 光标所在行高亮
set cursorline
" 关闭自动折行
set nowrap
" 垂直滚动时,光标距离顶部/底部的距离(单位:行)
set scrolloff=5
" 水平滚动时,光标距离行首或行尾的距离(单位:字符)
set sidescrolloff=30
" 设置行宽,即一行显示多少字符
set textwidth=1000
" 是否显示状态栏:0表示不显示,1表示只在多窗口显示,2表示显示
set laststatus=2
" 设置状态条显示的信息:文件名、光标所在字符的ASCII码、光标所在字符的ASCII码的十六进制、光标所在的位置、光标所在行之上的内容占整个文件的百分比、文件总行数
set statusline=\ %F%m%r%h%w\ \ \ \ ASCII=\%03.3b\ \ \ \ HEX=\%02.2B\ \ \ \ POS=%04l,%04v\ \ \ \ %p%%\ \ \ \ NumOfLine=%L
" 显示行尾的空格
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
" 光标遇到括号时,自动高亮对应的另一半括号
set showmatch
" 命令行模式下,在底部显示当前键入的指令。例如键入dd删除一行时,键入第一个d,底部右侧显示d,完全键入dd时,操作完成,底部显示消失
set showcmd
" 搜索时,高亮显示搜索"结果
set hlsearch
" 搜索时,每输入一个字符,自动跳到第一个匹配的结果
set incsearch
" 搜索时忽略大小写
set ignorecase
" 不创建交换文件
set noswapfile
" 保留 撤销 操作历史
set undofile
" 设置操作历史文件的保存位置
set undodir=~/.vim/.undo//
" vim需要记住多少次历史操作
set history=1000
" 命令模式下,底部操作指令按下 Tab 键自动补全。第一次按下 Tab,会显示所有匹配的操作指令的清单;第二次按下 Tab,会依次选择各个指令
set wildmenu
set wildmode=longest:list,full
" F5一键编译运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec '!g++ % -o %<'
exec '!time ./%<'
elseif &filetype == 'cpp'
exec '!g++ % -o %<'
exec '!time ./%<'
elseif &filetype == 'python'
exec '!python %'
elseif &filetype == 'java'
exec "!javac %"
exec "!time java %<"
" 如果显示时间,将上面一句换为exec '!time python %'
elseif &filetype == 'sh'
:!time bash %
endif
endfunc
" 定义F1快捷键为切换vim窗口
map <F1> <C-w>w
" ====== C,C++的调试 =========
map <F6> :call Rungdb()<CR>
func! Rungdb()
exec "w"
if &filetype == 'c'
exec "!gcc % -g -o %<"
exec "!gdb ./%<"
elseif &filetype == 'cpp'
exec "!g++ % -g -o %<"
exec "!gdb ./%<"
endif
endfunc
vimplus
其次,可以安装一个很方便的软件vimplus
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh
安装结束后,打开vim时会提示ycm没启动
he ycmd server SHUT DOWN (restart with ':YcmRestartServer').
Unexpected error while loading the YCM core library.
Use the ':YcmToggleLogs' command to check the logs.
解决ycm的问题
cd ~/.vim/plugged/YouCompleteMe/
./install.py --clang-completer --system-libclang --no-regex
./install.py
sudo apt install vim-youcompleteme
vim-addons install youcompleteme
安装的时候会下载一些东西,可能会比较久,其中还会询问使用python2还是python3编译安装ycm,选择python2。如果是服务器,可以在vim目录中删去vim-devicons。
编译运行
unmap <F5>
noremap <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!rm ./%<"
let file_type = expand("%:e")
if file_type == 'cu'
exec "!nvcc % -o %<"
exec "!time ./%<"
endif
endfunc
安装之后vim的状态栏可能会出现奇怪的字体,这是因为nerd本想搞个酷炫的小图标,但是这种图标不是标准编码,在linux中可能因为字体原因出现乱码。可以选择给字体打补丁,或者下载专门打好补丁的字体,比如这里下载,或者这个nerd font补丁程序,也可以使用命令下载安装字体。centos7的默认字体是MonoSpace,所以就下载SpaceMono补丁字体
#新建字体文件夹
mkdir ~/.fonts
cd ~/.fonts
git clone https://github.com/powerline/fonts.git
cd fonts
./install.sh
cd ..
rm -rf fonts
#安装字体
#fc-cache -vf ~/.fonts
在~/.vimrc中加入相应的设置
let laststatus = 2
let g:airline_powerline_fonts = 1 " 使用powerline打过补丁的字体
let g:Powerline_symbols='fancy'
安装vimplus时会把原本的~/.vim/.vimrc设置覆盖,只需要在~/.vimrc中加上
if filereadable(expand($HOME . '?.vim/vimrc'))
source $HOME/.vim/vimrc
endif
最后可以换一个背景配色,典型的是solarized配色,最后发现onedark比较好
git clone git://github.com/altercation/vim-colors-solarized.git
将配色文件复制到.vim/colors,最后设置
colorscheme solarized
下载tabnine自动补全工具
git clone --depth 1 https://github.com/zxqfl/tabnine-vim
set rtp+=~/tabnine-vim
背景透明
hi Normal ctermfg=252 ctermbg=none
一键运行
map <F6> :call Run()<CR>
func! Run()
exec "w"
exec "make"
exec "!./%<"
endfunc