.vimrc文件(vim配置)

使用方法:
將下述代碼複製、粘貼、保存爲.vimrc文件,放在家目錄下即可。

1、vim基礎功能配置 .vimrc(無插件)

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"編碼、語言設置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set langmenu=zh_CN.UTF-8

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"代碼按照縮進收放
"zR:打開所有
"zM:收起所有
"zc:收起光標所在塊
"zo:打開光標所在塊
"za:光標所在的位置打開/收起狀態取反
set foldmethod=indent

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""自動補全
"":inoremap ( ()<ESC>i
"":inoremap ) <c-r>=ClosePair(')')<CR>
"":inoremap { {<CR>}<ESC>O
"":inoremap } <c-r>=ClosePair('}')<CR>
"":inoremap [ []<ESC>i
"":inoremap ] <c-r>=ClosePair(']')<CR>
"":inoremap " ""<ESC>i
"":inoremap ' ''<ESC>i

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"設置狀態行顯示常用信息
"%= 剩餘的內容向右對齊
"\  轉義字符
set statusline=%F%=\ asc=%b\ hex=0x%B\ line=%l\[%p%%,%L]\ row=%v\ \ \ \ .
"設置laststatus = 0 ,不顯式狀態行
"設置laststatus = 1 ,僅當窗口多於一個時,顯示狀態行
"設置laststatus = 2 ,總是顯式狀態行
set laststatus=2

" 在被分割的窗口間顯示空白,便於閱讀
set fillchars=vert:\ ,stl:\ ,stlnc:\

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"重映射實際行和屏幕行
nnoremap k  gk
nnoremap j  gj
nnoremap gj j
nnoremap gk k

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"TAB
"空格代替Tab"
"注意: 插入模式下輸入【ctrl+v+i】可以強制輸入一個tab
set tabstop=4     " tabstop 表示一個 tab 顯示出來是多少個空格的長度,默認8
set softtabstop=4 " softtabstop 表示在編輯模式的時候按退格鍵的時候退回縮進的長度,當使用 expandtab 時特別有用
set expandtab     " 當設置成 expandtab 時,縮進用空格來表示,noexpandtab 則是用製表符表示一個縮進
set autoindent    " 自動縮進
set cindent       " 自動縮進補充
set shiftwidth=4  " 自動縮進空白字符個數

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"顯示肉眼不可見字符
"顯示換行爲$符號
set list
"table顯示爲>---
set listchars=tab:>-
"高亮顯示行尾空格
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"通用設置
set cursorline    " 突出顯示當前行
set syntax=on     " 語法高亮
set scrolloff=15  " 光標上移下移時,始終預留 x 行空格到頂部或底部
set nu            " 顯示行號
"set rnu           " 使用相對行號
set history=1000  " 歷史記錄數
set showmatch     " 高亮顯示匹配的括號
set hlsearch      " 搜索逐字符高亮

2、vim含基礎功能與插件等功能配置 .vimrc(有插件)

備註:
該vimrc文件需要先安裝插件,否則使用vim打開文件時會大量報錯。
插件安裝方法見另一篇博客:【vim常用插件安裝&使用方法(一步一步配置VIM開發環境)】。

先上一張效果圖:
在這裏插入圖片描述

.vimrc文件內容如下:

""""""""""""""""""""""""""""""""""""""""""""""""
"編碼、語言設置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set langmenu=zh_CN.UTF-8

""""""""""""""""""""""""""""""""""""""""""""""""
"代碼按照縮進收放
"zR:打開所有
"zM:收起所有
"zc:收起光標所在塊
"zo:打開光標所在塊
"za:光標所在的位置打開/收起狀態取反
"set foldmethod=indent

""""""""""""""""""""""""""""""""""""""""""""""""
"自動補全
":inoremap ( ()<ESC>i
":inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {<CR>}<ESC>O
":inoremap } <c-r>=ClosePair('}')<CR>
":inoremap [ []<ESC>i
":inoremap ] <c-r>=ClosePair(']')<CR>
":inoremap " ""<ESC>i
":inoremap ' ''<ESC>i

""""""""""""""""""""""""""""""""""""""""""""""""
"設置狀態行顯示常用信息
"%= 剩餘的內容向右對齊
"\  轉義字符
set statusline=%F%=\ asc=%b\ hex=0x%B\ line=%l\[%p%%,%L]\ row=%v\ \ \ \ .
"設置laststatus = 0 ,不顯式狀態行
"設置laststatus = 1 ,僅當窗口多於一個時,顯示狀態行
"設置laststatus = 2 ,總是顯式狀態行
set laststatus=2

""""""""""""""""""""""""""""""""""""""""""""""""
" 在被分割的窗口間顯示空白,便於閱讀
set fillchars=vert:\ ,stl:\ ,stlnc:\

""""""""""""""""""""""""""""""""""""""""""""""""
"重映射實際行和屏幕行
nnoremap k  gk
nnoremap j  gj
nnoremap gj j
nnoremap gk k

""""""""""""""""""""""""""""""""""""""""""""""""
"TAB
"空格代替Tab"
"注意: 插入模式下輸入【ctrl+v+i】可以強制輸入一個tab
set tabstop=4     " tabstop 表示一個 tab 顯示出來是多少個空格的長度,默認8
set softtabstop=4 " softtabstop 表示在編輯模式的時候按退格鍵的時候退回縮進的長度,當使用 expandtab 時特別有用
set expandtab     " 當設置成 expandtab 時,縮進用空格來表示,noexpandtab 則是用製表符表示一個縮進
set autoindent    " 自動縮進
set cindent       " 自動縮進補充
set shiftwidth=4  " 自動縮進空白字符個數

""""""""""""""""""""""""""""""""""""""""""""""""
"顯示肉眼不可見字符
"顯示換行爲$符號
set list
"table顯示爲>---
set listchars=tab:>-
"高亮顯示行尾空格
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/

""""""""""""""""""""""""""""""""""""""""""""""""
"通用設置
set cursorline    " 突出顯示當前行
set syntax=on     " 語法高亮
set scrolloff=15  " 光標上移下移時,始終預留 x 行空格到頂部或底部
set nu            " 顯示行號
"set rnu           " 使用相對行號
set history=1000  " 歷史記錄數
set showmatch     " 高亮顯示匹配的括號
set hlsearch      " 搜索逐字符高亮

""""""""""""""""""""""""""""""""""""""""""""""""
""快捷鍵F4,添加文件頭註釋,以及版權聲明
map <F4> :call TitleDet()<cr>'s
function AddTitle()
    "call append( 0, "/* COPYRIGHT NOTICE")
    call append( 0, "\/* 版權聲明")
    call append( 1, " * 功能     :")
    call append( 2, " * 作者     :lsy")
    call append( 3, " * 文件路徑 : ".expand("%:p:h")."/".expand("%:t"))
    call append( 4, " * 創建時間 :".strftime("%Y/%m/%d %H:%M"))
    call append( 5, " *\/")
    call append( 6, "")

    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endfunction
"更新最近修改時間和文件名
function UpdateTitle()
    normal m'
    execute '/#       @date      /s@:.*$@\=strftime(":%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/#       @file      /s@:.*$@\=":".expand("%:p:h")."\\".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判斷前10行代碼裏面,是否有COPYRIGHT NOTICE這個單詞,
"如果沒有的話,代表沒有添加過作者信息,需要新添加;
"如果有的話,那麼只需要更新即可
function TitleDet()
    let n = 1
    "默認爲添加
        let line = getline(n)
        "let str = '^/\* COPYRIGHT NOTICE$'
        let str = '^/\* 版權聲明$'
        if line =~ str
            call UpdateTitle()
            return
        endif
    call AddTitle()
endfunction

""""""""""""""""""""""""""""""""""""""""""""""""""
""快捷鍵F5,生成main函數模板
map <F5> :call TitleDet_main()<cr>'s
function AddTitle_main()
    "call append( 0, "/* COPYRIGHT NOTICE")
    call append( 0, "\/* 版權聲明")
    call append( 1, " * 功能     :")
    call append( 2, " * 作者     :lsy")
    call append( 3, " * 文件路徑 : ".expand("%:p:h")."/".expand("%:t"))
    call append( 4, " * 創建時間 :".strftime("%Y/%m/%d %H:%M"))
    call append( 5, " *\/")
    call append( 6, "")
    call append( 7, "#include <stdio.h>")
    call append( 8, "#include <string.h>")
    call append( 9, "")
    call append(10, "int main(int argc, char *argv[]) {")
    call append(11, "")
    call append(12, "    return 0;")
    call append(13, "}")

    echohl WarningMsg | echo "Successful in adding the main function." | echohl None
endfunction
"更新最近修改時間和文件名
function UpdateTitle_main()
    normal m'
    execute '/#       @date      /s@:.*$@\=strftime(":%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/#       @file      /s@:.*$@\=":".expand("%:p:h")."\\".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the main function." | echohl None
endfunction
"判斷前10行代碼裏面,是否有COPYRIGHT NOTICE這個單詞,
"如果沒有的話,代表沒有添加過作者信息,需要新添加;
"如果有的話,那麼只需要更新即可
function TitleDet_main()
    let n = 1
    "默認爲添加
        let line = getline(n)
        "let str = '^/\* COPYRIGHT NOTICE$'
        let str = '^/\* 版權聲明$'
        if line =~ str
            call UpdateTitle_main()
            return
        endif
    call AddTitle_main()
endfunction

""""""""""""""""""""""""""""""""""""""""""""""""""
""快捷鍵F6,生成.h文件模板
map <F6> :call TitleDet_h()<cr>'s
function AddTitle_h()
    "call append( 0, "/* COPYRIGHT NOTICE")
    call append( 0, "\/* 版權聲明")
    call append( 1, " * 功能     :")
    call append( 2, " * 作者     :lsy")
    call append( 3, " * 文件路徑 : ".expand("%:p:h")."/".expand("%:t"))
    call append( 4, " * 創建時間 :".strftime("%Y/%m/%d %H:%M"))
    call append( 5, " *\/")
    call append( 6, "")
    call append( 7, "#ifndef ")
    call append( 8, "#define ")
    call append( 9, "")
    call append(10, "")
    call append(11, "")
    call append(12, "#endif")

    echohl WarningMsg | echo "Successful in adding the .h file." | echohl None
endfunction
"更新最近修改時間和文件名
function UpdateTitle_h()
    normal m'
    execute '/#       @date      /s@:.*$@\=strftime(":%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/#       @file      /s@:.*$@\=":".expand("%:p:h")."\\".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the .h file." | echohl None
endfunction
"判斷前10行代碼裏面,是否有COPYRIGHT NOTICE這個單詞,
"如果沒有的話,代表沒有添加過作者信息,需要新添加;
"如果有的話,那麼只需要更新即可
function TitleDet_h()
    let n = 1
    "默認爲添加
        let line = getline(n)
        "let str = '^/\* COPYRIGHT NOTICE$'
        let str = '^/\* 版權聲明$'
        if line =~ str
            call UpdateTitle_h()
            return
        endif
    call AddTitle_h()
endfunction

""""""""""""""""""taglist 設置""""""""""""""""""
"let Tlist_Auto_Open = 1  "進入vim時自動打開插件
let Tlist_Ctags_Cmd = "/usr/bin/ctags"
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
set tags=tags

""""""""""""""""""配置WinManager""""""""""""""""""
let g:winManagerWindowLayout='FileExplorer|TagList'
"設置打開WinManager插件快捷鍵爲F8"
nmap <silent> <F8> :WMToggle<cr><C>wl
"進入vim時自動打開插件
let g:AutoOpenWinManager = 1
"設置winmanager的寬度,默認爲25"
let g:winManagerWidth = 30
"自動退出Winmanager
""autocmd bufenter * if ((winnr("$") == 2) && (exists("b:NERDTreeType")) && (b:NERDTreeType == "primary")) | qa | endif
autocmd bufenter * if ((winnr("$") == 3) && (exists("b:NERDTreeType"))) | qa | endif

""""""""""""""""""""""""""""""""""""""""""""""""
"""""""Powerline"""""""
set rtp+=/home/lsy/.local/lib/python2.7/site-packages/powerline/bindings/vim
"These lines setup the environment to show graphics and colors correctly.
set nocompatible
set t_Co=256
let g:minBufExplForceSyntaxEnable = 1
if ! has('gui_running')
set ttimeoutlen=10
augroup FastEscape
autocmd!
au InsertEnter * set timeoutlen=0
au InsertLeave * set timeoutlen=1000
augroup END
endif
set laststatus=2 " Always display the statusline in all windows
set guifont=Inconsolata\ for\ Powerline:h14
set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the statusline)
"字體補丁
let laststatus = 2
"使用powerline打過補丁的字體"
let g:airline_powerline_fonts = 1
let g:Powerline_symbols='fancy'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章