1. 程式人生 > >vim配置檔案(帶中文註釋)

vim配置檔案(帶中文註釋)

vim簡介

VimVi Improved) 是一個類似於vi 的文字編輯器,在Vi的基礎上增加了很多新的特性和功能。Vim以其強大的功能和可定製能力,成為Linux/Unix環境下開源的最重要的編輯器之一(另一個是 Emacs),被眾多開發者所喜愛。筆者此時所用的是最新的7.1版本。 與大部分其它編輯器不同,進入 Vim 後,預設狀態下鍵入的字元並不會插入到所編輯的檔案之中。Vim 的模式(mode,可以簡單地理解為狀態)概念非常重要。需要知道,Vim 有以下幾個模式: 1)正常(normal)模式,預設的編輯模式;下面如果不加特殊說明,提到的命令都直接在正常模式下輸入;任何其它模式中都可以通過鍵盤上的
 Esc 鍵回到正常模式。 2)命令(command)模式,用於執行較長、較複雜的命令;在正常模式下輸入“:”(一般命令)、“/”(正向搜尋)或“?”(反向搜尋)即可進入該模式;命令模式下的命令要輸入回車鍵(Enter)才算完成。 3)插入(insert)模式,輸入文字時使用;在正常模式下鍵入“i”insert)或“a”append)即可進入插入模式(也有另外一些命令,如“c”,也可以進入插入模式,但這些命令有其它的作用)。 4)可視(visual)模式,用於選定文字塊;可以在正常模式下輸入“v”(小寫)來按字元選定,輸入“V”(大寫)來按行選定,或輸入“Ctrl-V”來按方塊選定。 5)
選擇(select)模式,與普通的 Windows 編輯器較為接近的選擇文字塊的方式;在以可視模式和選擇模式之一選定文字塊之後,可以使用“Ctrl-G”切換到另一模式——該模式很少在 Linux 上使用,本文中就不再介紹了。

u設定vim語法高亮顯示和自動縮排

二、接下來設定vim的配置檔案 1、配置檔案的位置 在目錄 /etc/ 下面,有個名為vimrc的檔案,這是系統中公共的vim配置檔案,對所有使用者都有效。而在每個使用者的主目錄下,都可以自己建立私有的配置檔案,命名為:.vimrc。例如,/root目錄下,通常已經存在一個.vimrc檔案。        2、設定語法高亮顯示
1) 開啟vimrc,新增以下語句來使得語法高亮顯示: syntax on 2) 如果此時語法還是沒有高亮顯示,那麼在/etc目錄下的profile檔案中新增以下語句: export TERM=xterm-color        3、設定Windows風格的C/C++自動縮排(新增以下set語句到vimrc中)

新增以下設定即可:
" {{{
" DesCRiption: 適合自己使用的vimrc檔案,for Linux/Windows, GUI/Console
" Last Change: 2011-01-23 03:00:23 Asins - asinsimple AT gmail DOT com
" Author:      Assins - asinsimple AT gmail DOT com
"              Get latest vimrc from http://nootn.com/blog/Tool/22/
" Version:     2.0
"}}}

" 設定leader為,
let mapleader=","
let g:mapleader=","

syntax on                   " 自動語法高亮
set number                  " 顯示行號
set nocursorline            " 不突出顯示當前行
set shiftwidth=4            " 設定 << 和 >> 命令移動時的寬度為 4
set softtabstop=4           " 使得按退格鍵時可以一次刪掉 4 個空格
set tabstop=4               " 設定 tab 長度為 4
set nobackup                " 覆蓋檔案時不備份
set autochdir               " 自動切換當前目錄為當前檔案所在的目錄
set backupcopy=yes          " 設定備份時的行為為覆蓋
set ignorecase smartcase    " 搜尋時忽略大小寫,但在有一個或以上大寫字母時仍大小寫敏感
set nowrapscan              " 禁止在搜尋到檔案兩端時重新搜尋
set incsearch               " 輸入搜尋內容時就顯示搜尋結果
set hlsearch                " 搜尋時高亮顯示被找到的文字
set noerrorbells            " 關閉錯誤資訊響鈴
set novisualbell            " 關閉使用可視響鈴代替呼叫
set t_vb=                   " 置空錯誤鈴聲的終端程式碼
" set showmatch               " 插入括號時,短暫地跳轉到匹配的對應括號
" set matchtime=2             " 短暫跳轉到匹配括號的時間
"set nowrap                  " 不自動換行
set magic                  " 顯示括號配對情況
set hidden                  " 允許在有未儲存的修改時切換緩衝區,此時的修改由 vim 負責儲存
set smartindent             " 開啟新行時使用智慧自動縮排
set backspace=indent,eol,start
                            " 不設定在插入狀態無法用退格鍵和 Delete 鍵刪除回車符
set cmdheight=1             " 設定命令列的行數為 1
set laststatus=2            " 顯示狀態列 (預設值為 1, 無法顯示狀態列)
set foldenable              " 開始摺疊
set foldmethod=syntax       " 設定語法摺疊
set foldcolumn=0            " 設定摺疊區域的寬度
setlocal foldlevel=1        " 設定摺疊層數為
" set foldclose=all           " 設定為自動關閉摺疊
" colorscheme colorzone       " 設定配色方案
" colorscheme molokai         " 設定配色方案
" {{{ 編碼字型設定
" set termencoding=chinese
" set fileencodings=ucs-bom,utf-8,default,chinese,big5
" set ambiwidth=double
" set guifont=YaHei\ Consolas\ Hybrid:h12
" }}}

================================================================================================================================

" 不要使用vi的鍵盤模式,而是vim自己的
set nocompatible

" 語法高亮
set syntax=on

" 去掉輸入錯誤的提示聲音
set noeb

" 在處理未儲存或只讀檔案的時候,彈出確認
set confirm

" 自動縮排
set autoindent
set cindent

" Tab鍵的寬度
set tabstop=4

" 統一縮排為4
set softtabstop=4
set shiftwidth=4

" 不要用空格代替製表符
set noexpandtab

" 在行和段開始處使用製表符
set smarttab

" 顯示行號
set number

" 歷史記錄數
set history=1000

"禁止生成臨時檔案
set nobackup
set noswapfile

"搜尋忽略大小寫
set ignorecase

"搜尋逐字元高亮
set hlsearch
set incsearch

"行內替換
set gdefault

"編碼設定
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

"語言設定
set langmenu=zh_CN.UTF-8
set helplang=cn

" 我的狀態行顯示的內容(包括檔案型別和解碼)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]

" 總是顯示狀態行
set laststatus=2

" 在編輯過程中,在右下角顯示游標位置的狀態行
set ruler           

命令行(在狀態行下)的高度,預設為1,這裡是2
set cmdheight=2

" 偵測檔案型別
filetype on

" 載入檔案型別外掛
filetype plugin on

" 為特定檔案型別載入相關縮排檔案
filetype indent on

" 儲存全域性變數
set viminfo+=!

" 帶有如下符號的單詞不要被換行分割
set iskeyword+=_,$,@,%,#,-

" 字元間插入的畫素行數目
set linespace=0

" 增強模式中的命令列自動完成操作
set wildmenu

" 使回格鍵(backspace)正常處理indent, eol, start等
set backspace=2

" 允許backspace和游標鍵跨越行邊界
set whichwrap+=<,>,h,l

" 可以在buffer的任何地方使用滑鼠(類似office中在工作區雙擊滑鼠定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key

" 通過使用: commands命令,告訴我們檔案的哪一行被改變過
set report=0

" 啟動的時候不顯示那個援助索馬利亞兒童的提示
set shortmess=atI

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

" 高亮顯示匹配的括號
set showmatch

" 匹配括號高亮的時間(單位是十分之一秒)
set matchtime=5

" 游標移動到buffer的頂部和底部時保持3行距離
set scrolloff=3

" 為C程式提供自動縮排
set smartindent

" 只在下列檔案型別被偵測到的時候顯示行號,普通文字檔案不顯示
if has("autocmd")
   autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
   autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
   autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o/*<ESC>'>o*/
   autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
   autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
   autocmd BufReadPost *
      \ if line("'\"") > 0 && line("'\"") <= line("$") |
      \   exe "normal g`\"" |
      \ endif
endif " has("autocmd")

" F5編譯和執行C程式,F6編譯和執行C++程式
" 請注意,下述程式碼在windows下使用會報錯
" 需要去掉./這兩個字元

" C的編譯和執行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc

" C++的編譯和執行
map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc

" 能夠漂亮地顯示.NFO檔案
set encoding=utf-8
function! SetFileEncodings(encodings)
    let b:myfileencodingsbak=&fileencodings
    let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
    let &fileencodings=b:myfileencodingsbak
    unlet b:myfileencodingsbak
endfunction

au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
au BufReadPost *.nfo call RestoreFileEncodings()

" 高亮顯示普通txt檔案(需要txt.vim指令碼)
au BufRead,BufNewFile *  setfiletype txt

" 用空格鍵來開關摺疊
set foldenable
set foldmethod=manual
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>

" minibufexpl外掛的一般設定
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1