有两种方式配置vim,一种是配置默认的.vimrc,一种是使用spacevim
一.vim配置
1.安装ctag + cscope
sudo apt-get install cscope exuberant-ctags
2.安装vundle
使用Vundle安装以及管理插件。
cd ~/.vim
mkdir bundle
cd bundle
git clone https://github.com/VundleVim/Vundle.vim.git
3.安装vim 插件
常用的几个插件。
1. lookupfile 补全
2. taglist 查看函数列表
3. suptab tab栏,多开文件
4. mru 历史列表
5. nerdtree 文件夹管理器
6. colorscheme vim配色
在/home/linux
打开vimrc
sudo vi .vim/vimrc
放入以下内容,在终端输入vim, 打开vim,输入:PluginInstall
,开始依次安装。
""""""""""""""""""""""""""""""
"General
""""""""""""""""""""""""""""""
"Get out of VI's compatible mode..
set nocompatible
set tags=./tags,./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,./../../../../../../tags,./../../../../../../../tags,./../../../../../../../../tags,./../../../../../../../../../tags,./../../../../../../../../../../tags,./../../../../../../../../../../../tags,./../../../../../../../../../../../../tags,./../../../../../../../../../../../../../tags,./../../../../../../../../../../../../../../tags
"Have the mouse enabled all the time:
set mouse=
set path+=**
set wildmenu
set nu
"Set mapleader
let mapleader = ","
let g:mapleader = ","
"Enable syntax hl
syntax enable
"Highlight search things
set hls
"Set font to Monospace 11pt
set guifont=Monospace\ 11
"Hide menu bar & tool bar of GVim
set guioptions-=m
set guioptions-=T
""""""""""""""""""""""""""""""
"Indent
""""""""""""""""""""""""""""""
"Auto indent
set ai
"Smart indet
set si
"自动补全
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap < <><Esc>i
inoremap { {}<Esc>i
inoremap ' ''<Esc>i
inoremap " ""<Esc>i
inoremap { {<CR>}<Esc>O
"C-style indeting
set cindent
set softtabstop=4
set expandtab
set shiftwidth=4
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'taglist.vim'
Plugin 'lookupfile'
Plugin 'ervandew/supertab'
Plugin 'genutils'
" kern's config
Plugin 'mru.vim'
Plugin 'scrooloose/nerdtree'
Plugin 'flazz/vim-colorschemes'
Plugin 'mrtazz/molokai.vim'
Plugin 'zacanger/angr.vim'
call vundle#end()
""""""""""""""""""""""""""""""
"Cscope
""""""""""""""""""""""""""""""
if has("cscope")
set csprg=/usr/bin/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
nmap <leader>cs :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <leader>cg :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <leader>cc :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <leader>ct :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <leader>ce :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <leader>cf :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <leader>ci :cs find i <C-R>=expand("<cfile>")<CR><CR>
nmap <leader>cd :cs find d <C-R>=expand("<cword>")<CR><CR>
""""""""""""""""""""""""""""""
"Fast saving & quiting
""""""""""""""""""""""""""""""
nmap <silent> <leader>w :w!<cr>
nmap <silent> <leader>q :q<cr>
nmap <silent> <leader>qf :q!<cr>
nmap <silent> <leader>wq :w!<cr>:qall<cr>
nmap <silent> <leader>qq :qall<cr>
""""""""""""""""""""""""""""""
"Fast saving & loading session
""""""""""""""""""""""""""""""
nmap <silent> <leader>ms :mksession! ~/.vim/last.vim<cr>
nmap <silent> <leader>ss :source ~/.vim/last.vim<cr>
"Fast reloading of the .vimrc
nmap <leader>s :w<cr>:source ~/.vimrc<cr>
""Fast editing of .vimrc
nmap <leader>e :e! ~/.vimrc<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Files and backups
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "Turn backup off
set nobackup
set nowb
set noswapfile
""""""""""""""""""""""""""""""
" Tag setting
""""""""""""""""""""""""""""""
nmap <cr> <C-]>
nmap <F7> :ts <C-R>=expand("<cword>")<CR><CR>
""""""""""""""""""""""""""""""
" Tag list (ctags)
""""""""""""""""""""""""""""""
nmap <silent> <leader>d :TlistToggle<cr>
nmap <C-h> <C-W>h
nmap <C-j> <C-W>j
nmap <C-k> <C-W>k
nmap <C-l> <C-W>l
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
let Tlist_Sort_Type = "name"
let Tlist_WinWidth = 40
""""""""""""""""""""""""""""""
" "Enable folding, I find it very useful
""""""""""""""""""""""""""""""
"syn region myFold start="{" end="}" transparent fold
"syn sync fromstart
"set foldmethod=syntax
set nofen
set fdl=0
""""""""""""""""""""""""""""""
"Auto complete
""""""""""""""""""""""""""""""
set complete-=i
"""""""""""""""""""""""""""""""
"lookupfile setting
""""""""""""""""""""""""""""""
let g:LookupFile_MinPatLength = 2
let g:LookupFile_PreserveLastPattern = 0
let g:LookupFile_PreservePatternHistory = 1
let g:LookupFile_AlwaysAcceptFirst = 1
let g:LookupFile_AllowNewFiles = 0
let g:LookupFile_EnableRemapCmd = 0
if filereadable("./filenametags")
let g:LookupFile_TagExpr = '"./filenametags"'
endif
nmap <silent> <leader>lt :LUTags<cr>
nmap <silent> <leader>lb :LUBufs<cr>
nmap <silent> <leader>lw :LUWalk<cr>
nmap <silent> <F2> :LUBufs<cr>
nmap <silent> <F3> :exec "LUWalk" expand('%:p:h').'/'<cr>
nmap <silent> <F4> :exec "LUTags" expand("<cword>")<cr>
"""""""""""""""""""""""""""""""
"Tab setting
""""""""""""""""""""""""""""""
nmap <leader>ta :tab
nmap <silent> <leader>te :tabe<cr>
nmap <silent> <leader>ts :tab sp<cr>
nmap <silent> <leader>tc :tabc<cr>
nmap <silent> <leader>to :tabo<cr>
nmap <silent> <leader>tn :tabn<cr>
nmap <silent> <leader>tp :tabp<cr>
nmap <silent> <leader>tr :tabr<cr>
map <silent> <S-Tab> :tabp<cr>
map <silent> <Tab> :tabn<cr>
"""""""""""""""""""""""""""""""
"quick fix
""""""""""""""""""""""""""""""
autocmd FileType c,cpp nmap <leader><space> :w!<cr>:make<cr>
autocmd BufNewFile,BufRead *.java set formatprg=astyle
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" General Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Edit current dir
map <F6> :e %:p:h<cr>
nmap <leader>m :marks<cr>
nmap <leader>j :ju<cr>
nmap <leader>/ ^i//<esc>
map <silent> <F8> :%s/ / /g<cr>
map <silent> <F9> :%s/\s\+$//g<cr>
vmap <silent> <F9> :s/\s\+$//g<cr>
nmap <leader>rg :%s/^\s\+//<cr>:%s/ .*$//<cr>:%s/^/#修正 {{issue_title(/<cr>:%s/$/)}}/<cr>
map aa :s*^\s\+\\|^*\0//*<cr>:noh<cr>
map au :s*\(^\s\+\\|^\)//*\1*<cr>:noh<cr>
map as :%s/\(.*\) \(.*\) \(.*\)/\1 \3 \2/
nmap <leader>lg oandroid.util.Log.e("xulei", "");<esc>2hi
""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" personal settings
""""""""""""""""""""""""""""""""""""""""""""""""""""""""
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
colorscheme molokai
"colorscheme angr
"""""""""""""""""""""""""""""""
" MRU setting
""""""""""""""""""""""""""""""
nmap <silent> <leader>mr :MRU<cr>
"""""""""""""""""""""""""""""""
" NerdTree setting
""""""""""""""""""""""""""""""
"autocmd bufenter * if (winnr("$") == 0 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
let g:NERDTreeWinPos='right'
nmap <silent> <leader>n :NERDTreeToggle<cr>
"used for add code or delete/update code
"for java & C/C++
map <leader>fj o<ESC>0i/* SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>$a on:<Esc>:read !date -R <CR><ESC>kJ$o<ESC>0i * # TODO: replace this line with your comment<CR><Esc>0a */<CR><Esc>0i// End of SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>k
vmap <leader>fj xO<Esc>0i/* SNTV:<CR><Esc>k:read !git config --get user.name<CR>kJi<Del><Esc>$a on:<CR><Esc>k:read !date -R <CR><ESC>kJ$o<ESC>0i * # TODO: replace this line with your comment<Esc>gp<Esc>0a */<CR><Esc>0i// End of SNTV:<Esc>:read !git config --get user.name<CR>kJJ<Del>k
"for perl
map <leader>fp o<ESC>0i# SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>$a on:<Esc>:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><CR><Esc>0i# End of SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>k
vmap <leader>fp xO<Esc>0i# SNTV:<CR><Esc>k:read !git config --get user.name<CR>kJi<Del><Esc>$a on:<CR><Esc>k:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><ESC>0i=begin<Esc>gp<Esc>0a=end<CR><Esc>0a=cut<CR><CR><Esc>0i# End of SNTV:<Esc>:read !git config --get user.name<CR>kJJ<Del>k
"for shell
map <leader>fs o<ESC>0i# SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>$a on:<Esc>:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><CR><Esc>0i# End of SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>k
vmap <leader>fs xO<Esc>0i# SNTV:<CR><Esc>k:read !git config --get user.name<CR>kJi<Del><Esc>$a on:<CR><Esc>k:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><ESC>0i: INGORED UP TO << '--END-COMMENT--'<Esc>gp<Esc>0a--END-COMMENT--<CR><CR><Esc>0i# End of SNTV:<Esc>:read !git config --get user.name<CR>kJJ<Del>k
"for makefile
map <leader>fm o<ESC>0i# SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>$a on:<Esc>:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><CR><Esc>0i# End of SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>k
vmap <leader>fm xO<Esc>0i# SNTV:<CR><Esc>k:read !git config --get user.name<CR>kJi<Del><Esc>$a on:<CR><Esc>k:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><ESC>0iifdef 0<Esc>gp<Esc>0aendif<CR><CR><Esc>0i# End of SNTV:<Esc>:read !git config --get user.name<CR>kJJ<Del>k
"for xml
map <leader>fx o<ESC>0i<!-- SNTV:<Esc>:read !git config --get user.name<CR>kJ<Del>$a on:<Esc>:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<CR><Esc>0a--><CR><CR><Esc>0i<!-- End of SNTV:<Esc>:read !git config --get user.name<CR>$a --><Esc>kJ<Del>k
vmap <leader>fx xO<Esc>0i<!-- SNTV:<CR><Esc>k:read !git config --get user.name<CR>kJi<Del><Esc>$a on:<CR><Esc>k:read !date -R <CR><ESC>kJ$o<ESC>0i# TODO: replace this line with your comment<Esc>gp<Esc>0a--><CR><CR><Esc>0i<!-- End of SNTV:<Esc>:read !git config --get user.name<CR>$a --><Esc>kJJ<Del>k
4.常用的操作
1.打开现有文件夹下的文件列表
F6
2.函数跳转
光标落到函数名上,按enter键,跳入函数实现。
3.补全代码:
输入函数,变量等前缀,按tab键,即可跳出补全列表,再按tab键可以选择,
无需要按enter键 (这个方式很多人会有点不习惯,但是少按enter的确是更高效了)。
4.新建tab页签:
连击输入",ts"(逗号,t,s),可以打开一个新的tab页签。
",tc" 关闭当前tab页签。
tab键,落焦点到下一个tab页签。
5.查看历史列表:
",mr":打开历史列表
二.spacevim
https://github.com/SpaceVim/SpaceVim
1.安装
首先,您需要安装 Vim ,此外,您需要在系统中安装git并curl安装,这是下载插件和字体所必需的。
curl -sLf https://spacevim.org/install.sh | bash
SpaceVim 安装、启动后nvim,vim会自动下载所有插件。
2.使用
1.打开文件夹目录
space + f + t
2.注释
注释
space + c + l "//"
sapce + c + s "/* */"
3.编译文件
space + l + r