将下面的内容,粘贴到~/.vimrc文件中,在按照使用方法来安装和配置即可。
let g:mapleader = ","
"""""""""""""""""""""""""""""""""""""
"basis settingd "
"""""""""""""""""""""""""""""""""""""
"high-light
syntax enable
syntax on
set nocp
set ru
"support mouse move and select
set mouse=a
"the space number of tab-key is 4
set tabstop=4
"next line keep with former line
set autoindent
"show line in col 80
"set cc=80:
set shiftwidth=4
"check file-type
filetype on
"show the row and line of mouse
set ruler
"undo file
set undofile
set undodir=$HOME/.vim/undodir
"
set showmatch
"show line number
set number
"show result for search when input one character
set incsearch
"ignore low-high case for search
set smartcase
set list
set listchars=tab:>-,trail:-
"
set paste
set smartindent
set matchtime=5
set cindent
" high-light show this col and row
set cursorline
"set cursorcolumn
" high-light search
set hlsearch
"tab convert to space
set expandtab
"show cmd
set showcmd
"prohibit generate swap=file
set nobackup
set noswapfile
" no high-light
nmap <F2> :noh<cr>
" support 256 colors
set t_Co=256
""""""""""""""""""""""""""""""""""""""
"quick-print "
""""""""""""""""""""""""""""""""""""""
function PRINT()
call append(line("."), "fflush(stdout);")
call append(line("."), "printf(\"[%s],[%d]\\n\",__FUNCTION__,__LINE__);")
endfunction
map <F8> : call PRINT() <cr>
""""""""""""""""""""""""""""""""""""""
"winmanger setting "
""""""""""""""""""""""""""""""""""""""
" wm :map winmanager
nmap wm :WMToggle<cr>
let g:winManagerWindowLayout='FileExplorer'
""""""""""""""""""""""""""""""""""""""
"ctags settings "
""""""""""""""""""""""""""""""""""""""
"loading ctags-file path
"tg :map open or close taglist
nmap tg :TlistToggle<Cr>
"nmap to :TlistOpen<cr>
"tc :map close taglist
"nmap tc :TlistClose<cr>
"ctags bin patch
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
"auto open taglist 1--auto 0--manual
let Tlist_Auto_Open=1
"taglist direction 0--right 1--left
let Tlist_Use_Right_Window = 0
"""""""""""""""""""""""""""""""""""""""
"cscpoe setting "
"""""""""""""""""""""""""""""""""""""""
"loading cscpoe.out
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
else
let cscope_file=findfile("cscope.out",".;")
let cscope_pre=matchstr(cscope_file,".*/")
if !empty(cscope_file) && filereadable(cscope_file)
exe "cs add" cscope_file cscope_pre
endif
endif
set csverb
endif
"maping quick-key
"css :find this C symbol
nmap css :cs find s <C-R>=expand("<cword>")<CR><CR>
"csg :find this function defination
nmap csg :cs find g <C-R>=expand("<cword>")<CR><CR>
"csc :find the function where be called
nmap csc :cs find c <C-R>=expand("<cword>")<CR><CR>
"cst :find this string
nmap cst :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap cse :cs find e <C-R>=expand("<cword>")<CR><CR>
"csf :find this file
nmap csf :cs find f <C-R>=expand("<cfile>")<CR><CR>
"csi :find this file which file include
nmap csi :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
"csd :find function call which function
nmap csd :cs find d <C-R>=expand("<cword>")<CR><CR>
"""""""""""""""""""""""""""""""""""""""""""
" nerd-tree settings "
"""""""""""""""""""""""""""""""""""""""""""
" auto open nerd-tree
autocmd VimEnter * NERDTree
" nt open/close nerdtree
nmap nt :NERDTreeToggle<cr>
" the direction of nerd-tree
let NERDTreeWinPos="right"
" show bookmarks
let NERDTreeShowBookmarks=1
" auto close nerd-tree when only alive nerd-tree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" set nerd-tree show pic
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'
" show nerd-tree line number
"let g:NERDTreeShowLineNumbers=1
" dont show hidden file
let g:NERDTreeHidden=0
"Making it prettier
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1
"""""""""""""""""""""""""""""""""""""""""
" neocomplete settings "
"""""""""""""""""""""""""""""""""""""""""
"Note: This option must be set in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)!
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplete.
let g:neocomplete#enable_at_startup = 1
" Use smartcase.
let g:neocomplete#enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 3
" Define dictionary.
let g:neocomplete#sources#dictionary#dictionaries = {
\ 'default' : '',
\ 'vimshell' : $HOME.'/.vimshell_hist',
\ 'scheme' : $HOME.'/.gosh_completions'
\ }
" Define keyword.
if !exists('g:neocomplete#keyword_patterns')
let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = '\h\w*'
" Plugin key-mappings.
inoremap <expr><C-g> neocomplete#undo_completion()
inoremap <expr><C-l> neocomplete#complete_common_string()
" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
return (pumvisible() ? "\<C-y>" : "" ) . "\<CR>"
" For no inserting <CR> key.
"return pumvisible() ? "\<C-y>" : "\<CR>"
endfunction
" <TAB>: completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>"
" Close popup by <Space>.
"inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>"
" AutoComplPop like behavior.
"let g:neocomplete#enable_auto_select = 1
" Shell like behavior(not recommended).
"set completeopt+=longest
"let g:neocomplete#enable_auto_select = 1
"let g:neocomplete#disable_auto_complete = 1
"inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"
" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
" Enable heavy omni completion.
if !exists('g:neocomplete#sources#omni#input_patterns')
let g:neocomplete#sources#omni#input_patterns = {}
endif
"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
"let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
"let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
" For perlomni.vim setting.
" https://github.com/c9s/perlomni.vim
let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
""""""""""""""""""""""""""""""""""""""""""
" rainbow settings "
""""""""""""""""""""""""""""""""""""""""""
"auto open rainbow
let g:rainbow_active = 1
" type
let g:rainbow_conf = {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\ 'operators': '_,\|+\|-_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'tex': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
\ },
\ 'css': 0,
\ }
\}
"""""""""""""""""""""""""""""""""""""""""""
" nerd-commenter "
"""""""""""""""""""""""""""""""""""""""""""
let g:NERDSpaceDelims = 1
let g:NERDDefaultAlign = 'left'
let g:NERDToggleCheckAllLines = 1
"""""""""""""""""""""""""""""""""""""""""""
" minbufferexploer "
"""""""""""""""""""""""""""""""""""""""""""
let g:miniBufExplMapWindowNavVim =1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
"""""""""""""""""""""""""""""""""""""""""""
" theme "
"""""""""""""""""""""""""""""""""""""""""""
"colorscheme molokai
"colorscheme solarized
colorscheme gruvbox
set background=dark
let g:molokai_original = 1
let g:rehash256 = 1
"""""""""""""""""""""""""""""""""""""""""""
" interestingword settings "
"""""""""""""""""""""""""""""""""""""""""""
nnoremap <silent> <leader>k :call InterestingWords('n')<cr>
nnoremap <silent> <leader>K :call UncolorAllWords()<cr>
nnoremap <silent> n :call WordNavigation(1)<cr>
nnoremap <silent> N :call WordNavigation(0)<cr>
"let g:interestingWordsGUIColors = ['#8CCBEA', '#A4E57E', '#FFDB72', '#FF7272', '#FFB3FF', '#9999FF']
let g:interestingWordsTermColors = ['154', '121', '211', '137', '214', '222']
"""""""""""""""""""""""""""""""""""""""""""
" LeaderF "
"""""""""""""""""""""""""""""""""""""""""""
" let g:Lf_ShortcutF = '<C-P>'
" let g:Lf_WindowPosition = 'popup'
" let g:Lf_PreviewInPopup = 1
"""""""""""""""""""""""""""""""""""""""""""
"CtrlP "
"""""""""""""""""""""""""""""""""""""""""""
let g:ctrlp_map = '<c-p>'
let g:ctrlp_working_path_mode = 'ra'
let g:ctrlp_switch_buffer = 'et'
let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10'
"""""""""""""""""""""""""""""""""""""""""""
" vim-airline "
"""""""""""""""""""""""""""""""""""""""""""
language messages zh_CN.utf-8
set encoding=utf-8
set langmenu=zh_CN.UTF-8
set helplang=cn
set ambiwidth=double
let laststatus = 2
let g:airline_powerline_fonts = 1
let g:airline_theme="dark"
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#buffer_nr_show = 1
"""""""""""""""""""""""""""""""""""""""""""
"syntastic "
"""""""""""""""""""""""""""""""""""""""""""
" let g:syntastic_enable_signs = 1
" let g:syntastic_error_symbol='✗'
" let g:syntastic_warning_symbol='►'
" let g:syntastic_always_populate_loc_list = 1
" let g:syntastic_auto_loc_list = 1
" let g:syntastic_loc_list_height = 5
" let g:syntastic_check_on_open = 1
" let g:syntastic_auto_jump = 1
" let g:syntastic_check_on_wq = 0
" let g:syntastic_enable_highlighting=1
" let g:syntastic_cpp_checkers = ['gcc']
" let g:syntastic_cpp_compiler = 'gcc'
" let g:syntastic_cpp_compiler_options = '-std=c++11'
" let g:syntastic_python_checkers = ['pyflakes']
" function! <SID>LocationPrevious()
" try
" lprev
" catch /^Vim\%((\a\+)\)\=:E553/
" llast
" endtry
" endfunction
" function! <SID>LocationNext()
" try
" lnext
" catch /^Vim\%((\a\+)\)\=:E553/
" lfirst
" endtry
" endfunction
" nnoremap <silent> <Plug>LocationPrevious :<C-u>exe 'call <SID>LocationPrevious()'<CR>
" nnoremap <silent> <Plug>LocationNext :<C-u>exe 'call <SID>LocationNext()'<CR>
" nmap <silent> sp <Plug>LocationPrevious
" nmap <silent> sn <Plug>LocationNext
" nnoremap <silent> <Leader>ec :SyntasticToggleMode<CR>
" function! ToggleErrors()
" let old_last_winnr = winnr('$')
" lclose
" if old_last_winnr == winnr('$')
" " Nothing was closed, open syntastic error location panel
" Errors
" endif
" endfunction
"""""""""""""""""""""""""""""""""""""""""""
" vim-plug settings and install "
"""""""""""""""""""""""""""""""""""""""""""
"manager plug
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
" YouCompleteMe
"Plug 'Valloric/YouCompleteMe'
" nerd-tree
Plug 'scrooloose/nerdtree'
" code release
Plug 'scrooloose/nerdcommenter'
" rainbow
Plug 'luochen1990/rainbow'
" fzf
"Plug 'junegunn/fzf'
"Plug '/usr/local/opt/fzf'
"Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
"Plug 'junegunn/fzf.vim'
" neoconplete
" Plug 'Shougo/neocomplete'
" wimmanager
Plug 'vim-scripts/winmanager'
" ctags
Plug 'esukram/vim-taglist'
" minibufexploer
Plug 'fholgado/minibufexpl.vim'
" molokai theme
"Plug 'tomasr/molokai'
" solarized theme
"Plug 'altercation/vim-colors-solarized'
" gruvbox theme
Plug 'morhetz/gruvbox'
"
"Plug 'vim-airline/vim-airline-themes'
" mark char
"Plug 'mbriggs/mark.vim'
" high-light interestwaords
Plug 'lfv89/vim-interestingwords'
" neocpmplete
Plug 'shougo/neocomplete.vim'
" Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
Plug 'ctrlpvim/ctrlp.vim'
" vim-airline"
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
"syntastic"
" Plug 'scrooloose/syntastic'
call plug#end()
说明
1. 插件管理插件安装和使用(vim-plug)
(要是没有curl可以下载安装一下)
sudo apt-get install curl
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
sudo ~/.vimrc
call plug#begin('~/.vim/plugged')
" 安装的插件
call plug#end()
vim-plug相关命令
1.PlugStatus(显示当前所有插件的状态)
2.PlugInstall(显示插件安装过程)
3.PlugUpdate
4.PlugClean
5.....
推荐一个插件网站,里面很多插件,并且告诉如何通过vim-plug进行安装和配置:vimawesome
在使用PlugInstall的时候,可能由于各种原因,下载很缓慢或者直接下载失败,我一般都是一个一个插件下载,先把其他插件注释掉,然后下载成功了一个之后,再下载另外一个,下载失败后多尝试几次就可以了。
2.插件使用方法
图中标注3个信息栏位:
- 文件信息栏:用于显示当前文件定义的函数名,宏之类的。用鼠标双击可以直接到函数的位置。是由插件taglist控制的。通过按键“tg”打开和关闭这个栏位,默认是打开的。
- 目录栏:用于显示打开当前文件是路径下文件夹和文件名,可以通过双击打开文件和进入文件夹。由插件nerdtree控制的。通过按键“nt”打开和关闭这个栏位,默认是打开的。
- 文件状态栏:显示当前文件状态,比如总行数之类的,是由插件vim-airline控制的。
其他的一些功能:
-
高亮显示选中的字符:通过按键“,k”(注意是逗号)来显示和关闭高亮。高亮后乐意通过‘n’向后查找高亮的字符,通过‘N’向前查找高亮的字符。
-
注释code:通过按键“,cs”来注释掉选中的代码或者当前行。通过按键“,cu”来撤销注释选中的代码或者当前行。
-
跳转:在平时看代码的时候,需要跳转到函数定义的地方。使用按键CTRL+}跳转到函数定义的地方,CTRL+T跳转会上一层。
-
搜索:看代码时,希望搜索某个函数或者变量在哪里被调用或者使用。使用快捷键csc来查看某个函数被调用的地方,使用快捷键cst可以看当前项目使用该函数(包括函数声明)或者变量的地方。
其中跳转和搜索都是基于项目的并且需要考cscope来实现,下面需要安装和配置一下
sudo apt-get update
sudo apt-get install cscope
在项目代码目录下执行
cscope -Rbq
执行cscope会产生三个文件,重要的是cscope.out
按照上述配置之后跳转和搜索功能就可以正常使用了。但是有个问题是,因为平时不仅仅会看代码,还会进行修改,cscope.out的信息是不会变的,所以会导致跳转和搜索后,跳转的位置不多或者有差别。因此需要手动把cscope.*文件删除,再手动执行cscope -Rbq重新生成一下cscope文件。生成了cscope文件之后,我们可以在项目下通过vim -t <function_name>,直接跳转到该函数的位置。
如果不习惯用文件定义的跳转和搜索快捷键的,可以自己修改下面列出来的nmap后面的即可
"csc :find the function where be called
nmap csc :cs find c <C-R>=expand("<cword>")<CR><CR>
"cst :find this string
nmap cst :cs find t <C-R>=expand("<cword>")<CR><CR>
- 代码补全:在INSERT模式下,打出若干个字符后按CTRL+p就可以显示提示,根据需要选择即可。除了这一条命令需要在INSERT模式下使用,其他命令都需要在命令模式下才有效。
- 文件搜索:在当前路径下搜索并打开文件。在命令模式下按CTRL+p,即可搜索。
文件信息栏 : tg
目录栏 :nt
高亮 :,k n N
注释 :,cs
取消注释 :,cu
跳转 : CTR+}
搜索 : csc cst
代码补全 :(INSERT mode) CTRL+p
文件搜索 :(COMMAND mode) CTRL+p
3.主题
" molokai theme
"Plug 'tomasr/molokai'
" solarized theme
"Plug 'altercation/vim-colors-solarized'
" gruvbox theme
Plug 'morhetz/gruvbox'
目前这里有三个主题,个人习惯gruvbox。喜欢其他两个的可以打开注释,把另外两个注释掉,然后PlugInstall就可以了。
4.额外的
按u可以撤销上次修改,撤销内容放在了$HOME/.vim/undodir,如果没有undodir需要手动建一下。
F8可以直接打印(因为是做C开发的)
printf(“[%s],[%d]\n”,__FUNCTION__,__LINE__);
fflush(stdout);