map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Auto_Open=1
set nocompatible
""""""""""界面""""""""""
colorscheme elflord
"set guifont=Monospace\ 11
set tabstop=4
set backspace=2
set nu! "顯示行號 set nowrap
set linebreak "整詞換行
set whichwrap=b,s,<,>,[,] "左右光標移動到頭時可以自動下移
"set autochdir "自動設置目錄為正在編輯的文件所在目錄
set hidden "沒有保存的緩沖區可以自動隱藏
set scrolloff=7"設置光標上下保留的最小的行數
set smartindent "智能對齊方式
set shiftwidth=4"換行時行間交錯使用4個空格
set autoindent "自動對齊
set ai! "設置自動縮進
set showcmd " display incomplete commands
set wildmenu "增強模式的命令行
"=========狀態欄相關===========
set laststatus=2"總是顯示狀態欄status line
set ruler "在編輯過程中,右下角顯示光表位置的狀態行
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
"==========編輯相關============
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
" Don't use Ex mode, use Q for formatting
"map Q gq
" In many terminal emulators the mouse works just fine, thus enable it. if has('mouse') set mouse=v
endif
set autowrite "在切換buffer時自動保存當前的文件 set autoread
"===========查找替換相關============ set hlsearch
set incsearch "" 查詢時非常方便,如要查找book單詞,當輸入到/b時,會自動找到 " 第一個b開頭的單詞,當輸入到/bo時,會自動找到第一個bo開頭的 " 單詞,依次類推,進行查找時,使用此設置會快速找到答案,當你 " 找要匹配的單詞時,別忘記回車
set gdefault "替換所有的行內匹配都被替換,而不是第一個
"=========編程相關===========
"set completeopt=longest,menu "關掉只能補全的時的預覽窗口
filetype plugin indent on
syntax on
syntax enable
"========================================"if has("vms") set nobackup " do not keep a backup file, use versions instead else set backup " keep a backup file endif
" Put these in an autocmd group, so that we can delete them easily.
"===================autocmd====================="
augroup vimrcEx
au!
"如果文件類型為text,則設置文本顯示的寬度為78,更多參考:h setlocal
autocmd FileType text setlocal textwidth=78" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
" Also don't do it when the mark is in the first line, that is the default
" position when opening a file.
" 如下的autocmd實現打開文件自動跳到上次編輯的位置
autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") | \ exe "normal! g`\"" | \ endif
autocmd! bufwritepost vimrc source ~/.vimrc
augroup END
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
" Only define it when not defined already. if !exists(":DiffOrig") command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis \ | wincmd p | diffthis
endif
"==========自定義的鍵映射==================""實現CTRL-S保存操作
nmap <c-s> :w<CR>
imap <c-s> <Esc>:w<CR>a
"實現了CTRL-C、CTRL-V復制粘貼操作的映射
vnoremap <c-c> "+y
inoremap <c-v> <esc>"+p<CR>i
map <F2> <c-e> "使用F2上翻頁
map <F3> <c-y> "使用F3下翻頁
map <silent> <F12> :nohlsearch<CR>
let mapleader = ","
let g:mapleader = ",""使用CTRL+[hjkl]在窗口間導航
"map <C-c> <C-W>c
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
"map <C-c> <C-W>c
"使用箭頭導航buffer
map <right> :bn<cr>
map <left> :bp<cr>
" Tab configuration
map <leader>tn :tabnew<cr>
map <leader>te :tabedit
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove
"括號匹配
vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $e <esc>`>a"<esc>`<i"<esc>
"非常好用的括號匹配,實際是自動生成括號
"實現便利和兼容的折中
inoremap $1 ()<esc>i
inoremap $2 []<esc>i
inoremap $3 {}<esc>i
inoremap $4 {<esc>o}<esc>O
inoremap $q ''<esc>i
inoremap $e ""<esc>i
inoremap $t <><esc>i
"使用ALT+[jk]來移動行內容
nmap <M-j> mz:m+<cr>`z
nmap <M-k> mz:m-2<cr>`z
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z
"========================================
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>
"========================================""========自動載入項目的配置文件=========="if filereadable("workplace.vim") source workplace.vim
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"自動判斷是否存在cscope并配置 if has("cscope") set csprg=/usr/local/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 <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
" Using 'CTRL-spacebar' then a search type makes the vim window
" split horizontally, with search result displayed in
" the new window.
"nmap <C-M>s :scs find s <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M>g :scs find g <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M>c :scs find c <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M>t :scs find t <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M>e :scs find e <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
"nmap <C-M>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
"nmap <C-M>d :scs find d <C-R>=expand("<cword>")<CR><CR>
"
"" Hitting CTRL-space *twice* before the search type does a vertical
""split instead of a horizontal one
"
"nmap <C-M><C-M>s
" \:vert scs find s <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M><C-M>g
" \:vert scs find g <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M><C-M>c
" \:vert scs find c <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M><C-M>t
" \:vert scs find t <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M><C-M>e
" \:vert scs find e <C-R>=expand("<cword>")<CR><CR>
"nmap <C-M><C-M>i
" \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
"nmap <C-M><C-M>d
" \:vert scs find d <C-R>=expand("<cword>")<CR><CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" end cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""====== Minibuffer plugin=======""let g:miniBufExplModSelTarget = 1
"let g:miniBufExplorerMoreThanOne = 2
"let g:miniBufExplModSelTarget = 0
"let g:miniBufExplUseSingleClick = 1
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplVSplit = 25
"let g:miniBufExplSplitBelow=1
let g:bufExplorerSortBy = "name"
autocmd BufRead,BufNew :call UMiniBufExplorer
"使用<leader>u 打開Minibuffer
map <leader>u :TMiniBufExplorer<cr>
"========================================""Auto Completion Popmenu
let g:acp_behaviorSnipmateLength=1