歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux環境下個性化.vimrc文件

Linux環境下個性化.vimrc文件

日期:2017/3/3 12:33:28   编辑:Linux技術

[code]本文包含了vim的個性化設置及部分插件設置,是結合了網上許多教程整理而來,具體的插件教程網上有所介紹。
包括代碼自動補全,大括號自動換行縮進,多窗口管理,代碼折疊等功能。
都是從本人Ubuntu Server上copy過來的,所以是經過測試使用的。
[code]" ================ VIM Setting ================ "
syntax on           " 語法高亮
filetype on
filetype plugin on

set ruler           " 顯示標尺    
set showcmd         " 輸入的命令顯示出來  
set scrolloff=3     " 光標移動到buffer的頂部和底部時保持3行距離      
set laststatus=2    " 啟動顯示狀態行(1),總是顯示狀態行(2)    
set foldenable      " 允許折疊    
set foldmethod=manual       " 手動折疊    
set nocompatible    " 去一致性  
set autoindent      " 自動縮進  
set cindent  
set tabstop=2       " Tab鍵的寬度  
set softtabstop=2   " 統一縮進為4  
set shiftwidth=4  
set expandtab       " 不要用空格代替制表符  
set smarttab        " 在行和段開始處使用制表符  
set number          " 顯示行號  
set history=1024    " 歷史記錄數  
set hlsearch        " 搜索逐字符高亮  
set incsearch  
set cmdheight=2     " 總是顯示狀態行  
set iskeyword+=_,$,@,%,#,-          " 帶有如下符號的單詞不被換行分割
set completeopt=preview,menu        " 代碼補全
set clipboard+=unnamed      " 共享剪貼板    
set autowrite       " 自動保存  
set cursorline      " 突出顯示當前行
set nocompatible    " 不要使用vi的鍵盤模式,而是vim自己的  
set confirm         " 在處理未保存或只讀文件的時候,彈出確認  
set ignorecase      " 搜索忽略大小寫  
set fillchars=vert:\ ,stl:\ ,stlnc:\        "在被分割的窗口間顯示空白,便於閱讀  
set showmatch       " 高亮顯示匹配的括號  
set matchtime=1     " 匹配括號高亮的時間(單位是十分之一秒)  
set showcmd
set showmode
set cindent         " 使用C/C++語言的自動縮進方式
" set backspace = 2     " 設置退格鍵可用
" set previewwindow     " 標識預覽窗口
set background=dark
set mouse=a         " 使用鼠標
set linebreak       " 整詞換行
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s     "設置C/C++語言的具體縮進方式
set whichwrap=b,s,<,>,[,]         "光標從行首和行末時可以跳到另一行去

" 顏色設置
highlight PmenuSel ctermbg=green ctermfg=yellow

" 自動補全  
:inoremap ( ()<ESC>i
:inoremap { {<CR><CR>}<ESC>kV<O<DEL>
:inoremap [ []<ESC>i
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i

" ================ ctags setting ================ "
" 按下F4重新生成tag文件,並更新taglist

map <F4> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F4> <ESC>:!ctags -R --c++-kinds=+p --fileds=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags+=./tags        " add current directory's generated tags file
set tags+=~/libraries
set tags+=~/projects
set tags+=/usr/include/c++/tags
set tags+=/usr/include/linux/tags
set tags+=/usr/lib/x86_64-linux-gnu/5.3.1/include/tags

" ================ Omnicppcomplete Setting ================ "
" 按下F3自動補全代碼,注意該映射語句後不能有其他字符,包括Tab,否則會自動補全一些亂碼
imap <F3> <C-X><C-O>
" 按F2根據頭文件內關鍵字補全
imap <F2> <C-X><C-I>
set completeopt=menu,menuone        " 關掉智能補全時的預覽窗口
let OmniCpp_MayCompleteDot=1        " autocomplete with .
let OmniCpp_MayCompleteArrow=1      " autocomplete with ->
let OmniCpp_MayCompleteScope=1      " autocomplete with ::
let OmniCpp_SelectFirstItem=2       " select first item but not insert
let OmniCpp_NamespaceSearch=2       " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr=1   " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1     " enable the global scope search
let OmniCpp_DisplayMode=1           " Class scope completion mode: always show all members
let OmniCpp_ShowScopeInAbbr=1       " show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1
" let OmniCpp_DefaultNamespaces=["std"]

" ================ WinManager Setting ================ "
let g:winManagerWindowLayout='FileExplorer|TagList'      " 設置我們要管理的插件
let g:persistentBehaviour=0         " 如果所有編輯文件都關閉了,退出
let g:AutoOpenWinManager=1          " 自動打開
let g:winManagerWidth=32            " 設置寬度
nmap <F12> :WMToggle<CR>

" ================ Taglist Setting ================ "
let Tlist_Show_One_File=0           " 讓taglist可以同時展示多個文件的函數列表
let Tlist_Exit_OnlyWindow=1         " 當taglist是最後一個分割窗口時,自動退出
let Tlist_Process_File_Always=1     " 實時更新tags
let Tlist_File_Fold_Auto_Close=1    " 非當前文件,函數列表折疊隱藏
let Tlist_Use_Right_Window=1        " 讓窗口顯示在右邊,0代表左邊
let Tlist_Inc_Winwidth=0            " 

" ================ MiniBufferExplorer Setting ================  "
let g:miniBufExplMapWindowNavVim=1          " 按下Ctrl+h/j/k/l,可以切換到當前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows=1       " 按下Ctrl+箭頭,可以切換到當前窗口的上下左右窗口
let g:miniBufferplMapCTabSwitchBufs=1       " 啟用以下兩個功能:
                                            " Ctrl+Tab移動到下一個buffer並在當前窗口打開;
                                            " Ctrl+Shift+Tab移動到上一個buffer並在當前窗口打開。
let g:miniBufExplMapCTabSwitchWindows=1     " 啟用以下兩個功能:
                                            " Ctrl+Tab移到下一個窗口;
                                            " Ctrl+Shift+Tab移到上一個窗口
let g:miniBufExplModSelTarget=1             " 不再不可編輯內容的窗口中打開選中的buffer

" ================ Fold Setting ================ "
set foldmethod=syntax       " 用語法高亮來定義折疊
set foldlevel=100           " 啟動vim時不要自動折疊代碼
set foldcolumn=5            " 設置折疊欄寬度

" ================ QuickFix Setting ================ "
map <F6> :make clean<CR><CR><CR>                " 執行make clean
map <F7> :make<CR><CR><CR> :copen<CR><CR>       " 執行make編譯程序,並打開quickfix窗口,顯示編譯信息
map <F8> :cp<CR>                " 光標移動到上一個錯誤所在行
map <F9> :cn<CR>                " 光標移動到下一個錯誤所在行
imap <F6> <ESC>:make clean<CR><CR><CR>
imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>
imap <F8> <ESC>:cp<CR>
imap <F9> <ESC>:cn<CR>

" ================ Cscope setting ================ "
if has("cscope")
    set csprg=/usr/bin/cscope       " 指定用來執行cscope的命令
    set csto=0          " 設置cstag命令查找次序:0先找cscope數據庫再找標簽文件;1先找標簽文件再找cscope數據庫
    set cst             " 同時搜索cscope數據庫和標簽文件
    set cscopequickfix=s-,c-,d-,i-,t-,e-        " 使用QuickFix窗口來顯示cscope查找結果
    set nocsverb
    if filereadable("cscope.out")               " 若當前目錄下存在cscope數據庫,添加該數據庫到vim
        cs add cscope.out
    elseif $CSCOPE_DB != ""        " 否則只要環境變量CSCOPE_DB不為空,則添加其指定的數據庫到vim
        cs add $CSCOPE_DB
    endif
    set csverb
endif
map <F5> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
imap <F5> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 將:cs find c等Cscope查找命令映射為<C-_>c等快捷鍵(按法是先按Ctrl+Shift+-,然後很快再按下c)
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<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> :copen<CR><CR>

Copyright © Linux教程網 All Rights Reserved