" 設置字符編碼。參考:http://www.rainux.org/blog/index.php/2005/10/20/106
" encoding: Vim 內(nèi)部使用的字符編碼方式,包括 Vim 的 buffer (緩沖區(qū))、菜單文
" 本、消息文本等。用戶手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有
" 在 .vimrc 中改變它的值才有意義。
"
" 由于 Unicode 能夠包含幾乎所有的語言的字符,而且 Unicode 的 UTF-8 編碼方式
" 又是非常具有性價比的編碼方式 (空間消耗比 UCS-2 小),因此建議 encoding 的
" 值設置為 utf-8。這么做的另一個理由是 encoding 設置為 utf-8 時,Vim 自動探
" 測文件的編碼方式會更準確 (或許這個理由才是主要的)。
set encoding=utf-8
" fileencodings: Vim 啟動時會按照它所列出的字符編碼方式逐一探測即將打開的文
" 件的字符編碼方式,并且將 fileencoding 設置為最終探測到的字符編碼方式。因
" 此最好將 Unicode 編碼方式放到這個列表的最前面。
"
" 拉丁語系編碼方式 latin1 最好去掉。因為如果有 latin-1,在文件中有多種編碼
" 方式的內(nèi)容時 (比如,a 為 utf-8 編碼的中文文本文件,b 為 cp936 編碼的中文
" 文本文件,執(zhí)行命令 cat b >> a 后的 a 文件),最后 Vim 會將文件編碼設為
" latin-1,導致最終非英文內(nèi)容顯示完全亂碼。
"set fileencodings=utf-8,chinese,latin-1
set fileencodings=utf-8,chinese
" fileencoding: Vim 中當前編輯的文件的字符編碼方式,Vim 保存文件時也會將文
" 件保存為這種字符編碼方式。
"
" 如果打開的是已有的文件,則 Vim 會將 fileencoding 設置為上面探測到的字符編
" 碼,此處的設置不再有效;如果是新文件,則此處的 fileencoding 生效。
if has("win32")
" 我們在中文 Windows 里編輯的文件,為了兼顧與其他軟件的兼容性,文件編碼
" 還是設置為 GB2312/GBK 比較合適,因此 fileencoding 建議設置為 chinese
" (chinese 是個別名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也
" 就是 GBK 的代碼頁)。
set fileencoding=chinese
else
set fileencoding=utf-8
endif
" termencoding: Vim 所工作的終端 (或者 Windows 的 Console 窗口) 的字符編碼
" 方式。這個選項對 GUI 模式的 gVim 無效,而對 Console 模式的 Vim 而言就是
" Windows 控制臺的代碼頁 (對于 Windows 而言),并且通常我們不需要改變它。
"
" 下面這句只影響普通模式 (非圖形界面) 下的 Vim。
let &termencoding=&encoding
" 一般而言,在字符編碼配置正確的情況下,是不會出現(xiàn)亂碼問題的。
" 萬一不幸菜單亂碼 (比如,locale 設置為 zh_CN.UTF-8 而 encoding 卻設置為
" cp936 時。當然,此時最好的方法還是將 encoding 設置為 utf-8) ,請取消下
" 面兩行語句的注釋。
"source $VIMRUNTIME/delmenu.vim
"source $VIMRUNTIME/menu.vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 設置圖形界面。
"
" 字體部分,可參考《程序員最喜歡用的編程字體》一文:
" http://www.2maomao.com/blog/best-programmer-fonts/
if has("gui_running")
if has("win32")
" 設定 windows 下 gvim 啟動時最大化
autocmd GUIEnter * simalt ~x
" 設定 windows 下圖形界面下的字體。該字體需要自己下載安裝,下載地址:
" http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.zip
set guifont=Bitstream_Vera_Sans_Mono:h14:cANSI
else
" 設定 linux 下圖形界面下的字體,該字體 Fedora 7 自帶
set guifont=DejaVu\ LGC\ Sans\ Mono\ 14
endif
endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
colorscheme evening " 設定背景為夜間模式
filetype plugin on " 自動識別文件類型,自動匹配對應的
" “文件類型Plugin.vim”文件,使用縮進定義文件
set ambiwidth=double " ambiwidth 默認值為 single。在其值為 single 時,
" 若 encoding 為 utf-8,gvim 顯示全角符號時就會
" 出問題,會當作半角顯示。
set autochdir " 自動切換當前目錄為當前文件所在的目錄
set autoindent cindent cinoptions=g0
" 打開自動縮進和 C 語言風格的縮進模式,
" 定制 C 語言縮進風格
set backspace=indent,eol,start
" 不設定的話在插入狀態(tài)無法用退格鍵和 Delete
" 鍵刪除回車符
set backupcopy=yes " 設置備份時的行為為覆蓋
if v:version >= 700
set completeopt=menu,longest,preview
" 自動補全(ctrl-p)時的一些選項:
" 多于一項時顯示菜單,最長選擇,
" 顯示當前選擇的額外信息
endif
set confirm " 用確認對話框(對于 gvim)或命令行選項(對于
" vim)來代替有未保存內(nèi)容時的警告信息
set display=lastline " 長行不能完全顯示時顯示當前屏幕能顯示的部分。
" 默認值為空,長行不能完全顯示時顯示 @。
set expandtab " 將 tab 鍵轉(zhuǎn)換為空格
set formatoptions=tcqro " 使得注釋換行時自動加上前導的空格和星號
set hidden " 允許在有未保存的修改時切換緩沖區(qū),
" 此時的修改由切換由 vim 負責保存
set history=50 " 設置冒號命令和搜索命令的命令歷史列表的長度為 50
set hlsearch " 搜索時高亮顯示被找到的文本
set ignorecase smartcase " 搜索時忽略大小寫,但在有一個或以上大寫字母時
" 仍保持對大小寫敏感
set incsearch " 輸入搜索內(nèi)容時就顯示搜索結果
set mouse=a " 設定在任何模式下鼠標都可用
set nobackup " 覆蓋文件時不備份
set nocompatible " 設定 gvim 運行在增強模式下
set noignorecase " 默認區(qū)分大小寫
set nolinebreak " 在單詞中間斷行
set number " 顯示行號
set ruler " 打開狀態(tài)欄標尺
"set scrolloff=5 " 設定光標離窗口上下邊界 5 行時窗口自動滾動
set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度為 4
set showcmd " 在狀態(tài)欄顯示目前所執(zhí)行的指令,未完成的指令片段亦
" 會顯示出來
set softtabstop=4 " 使得按退格鍵時可以一次刪掉 4 個空格
" (不足 4 個時刪掉所有剩下的空格)
set tabstop=4 " 設定 tab 長度為 4
set whichwrap=b,s,<,>,[,] " 設定退格鍵、空格鍵以及左右方向鍵在行首行尾時的
" 行為,不影響 h 和 l 鍵
set wrap " 自動換行顯示
syntax on " 自動語法高亮
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 設置命令行和狀態(tài)欄
set cmdheight=1 " 設定命令行的行數(shù)為 1
set laststatus=2 " 顯示狀態(tài)欄 (默認值為 1, 無法顯示狀態(tài)欄)
set statusline=%F%m%r,%Y,%{&fileformat}\ \ \ ASCII=\%b,HEX=\%B\ \ \ %l,%c%V\ %p%%\ \ \ [\ %L\ lines\ in\ all\ ]
" 設置在狀態(tài)行顯示的信息如下:
" %F 當前文件名
" %m 當前文件修改狀態(tài)
" %r 當前文件是否只讀
" %Y 當前文件類型
" %{&fileformat}
" 當前文件編碼
" %b 當前光標處字符的 ASCII 碼值
" %B 當前光標處字符的十六進制值
" %l 當前光標行號
" %c 當前光標列號
" %V 當前光標虛擬列號 (根據(jù)字符所占字節(jié)數(shù)計算)
" %p 當前行占總行數(shù)的百分比
" %% 百分號
" %L 當前文件總行數(shù)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自動命令
" 讀文件時自動設定當前目錄為剛讀入文件所在的目錄
autocmd BufReadPost * cd %:p:h
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自定義縮寫
function! Eatchar(pat)
let s:c = nr2char(getchar())
return (s:c =~ a:pat) ? '' : s:c
endfunction
" C 文件頭注釋
iab /** /<Esc>75a*<Esc>o<Esc>0c$ * <Esc>yyADescription:<Esc>pmxpAAuthor : wplxb<Esc>pALanguage: C<Esc>pADate : <C-R>=strftime("%Y-%m-%d")<CR><Esc>p$r/74i*<Esc>0vyo<Esc>`x$9pa
" C 注釋
iab /// /* <Esc>mxa */<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab *** /*<Esc>yyppr A/<Esc>k0r A <C-R>=Eatchar('\s')<CR>
" C 預處理
iab #i #include <<Esc>mxa><Esc>`xa<C-R>=Eatchar('\s')<CR>
iab #d #define
" C 關鍵字
iab if( if (<Esc>mxa)<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab el{ else<CR>{<Esc>mxa<CR>}<Esc>`xa<CR><C-R>=Eatchar('\s')<CR>
iab ie( if (<Esc>mxa)<CR>{<CR>}<CR>else<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab fo( for (<Esc>mxa; ; )<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab fi( for (i = 0; i < <Esc>mxa; ++i)<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab fi1( for (i = 1; i <= <Esc>mxa; ++i)<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab fj( for (j = 0; j < <Esc>mxa; ++j)<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab fj1( for (j = 1; j <= <Esc>mxa; ++j)<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab ma( int main(int argc, char * argv[])<CR>{<Esc>mxa<CR>}<Esc>`xa<CR><CR>return 0;<Esc>`xa<CR><C-R>=Eatchar('\s')<CR>
iab wh( while (<Esc>mxa)<CR>{<CR>}<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab sw( switch (<Esc>mxa)<CR>{<CR>case <Esc>mya<CR>break;<CR>case <Esc>mza<CR>break;:<Esc>xa<CR>}<Esc>`yp`zp`xa<C-R>=Eatchar('\s')<CR>
iab sd( switch (<Esc>mxa)<CR>{<CR>case <Esc>mya<CR>break;<CR>case <Esc>mza<CR>break;<CR>default:<Esc>vya<CR>}<Esc>`yp`zp`xa<C-R>=Eatchar('\s')<CR>
" C 常用庫函數(shù)
iab sc( scanf("<Esc>mxa", );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab fs( fscanf(<Esc>mxa, "", );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab ss( sscanf(<Esc>mxa, "", );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab pr( printf("<Esc>mxa", );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab prn( printf("<Esc>mxa\n");<Esc>`x<C-R>=Eatchar('\s')<CR>
iab fp( fprintf(<Esc>mxa, "", );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab sp( sprintf(<Esc>mxa, "", );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab cpy( strcpy(<Esc>mxa, );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab cat( strcat(<Esc>mxa, );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab len( strlen(<Esc>mxa);<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab cmp( strcmp(<Esc>mxa, );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab qs( qsort(<Esc>mxa, , , );<Esc>`xa<C-R>=Eatchar('\s')<CR>
iab --- <Esc>75A-<Esc>a<C-R>=Eatchar('\s')<CR>
cab tn tabnew
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 鍵映射
nmap <F12> :%s,\s\+$,,g<CR>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
posted on 2008-07-24 12:16
豪 閱讀(501)
評論(0) 編輯 收藏 引用 所屬分類:
Linux