個人_vimrc文件

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" User configuration
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" turn off nice effect on status bar title
let performance_mode=0
let use_plugins_i_donot_use=0

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"咱們對Vim的描述都假設它是在加強模式下, 因此並不能徹底與Vi兼容
"因此首先確保關閉了 "compatible" 選項
set nocompatible

"定義當前的操做系統, 使用不一樣的系統時, 須要手動修改返回值
"返回值能夠爲 "win32" / "unix"/ "mac"
function! MySys()
    return "win32"
endfunction

"在Vim中執行一些過濾操做須要知道一些shell的有關狀況
"若是在使用過濾程序時遇到問題, 能夠考慮檢查下面一些選項的設置:
"   "shell"         指定Vim用於運行過濾程序的shell
"   "shellcmdflag"  該shell的參數
"   "shellquote"    用於分隔shell與過濾程序時成對包圍起過濾程序
"                   的字符
"   "shellxquote"   用於分隔shell與過濾程序和重定向符號時成對包
"                   圍起過濾程序和重定向符號的字符
"   "shelltype"     shell的類型(只對Amiga有用
"   "shellslash"    在命令中使用反斜槓(只對MS-Windows)這樣的
"                   系統有用
"   "shellredir"    用於將命令輸出重定向到文件的字符串
"
"在Unix上使用過濾程序不多會碰到問題, 由於有兩種shell: 'sh'派和
"'csh'派. Vim會檢查 "shell" 選項看是否包含了'csh'並自動設置相關的
"選項.
"但在windows上,有不少不一樣的shell,因此你要手工調整這些選項來讓過濾
"功能正常動做.請查看上面這些相關選項的幫助以瞭解更多信息
if MySys() == "unix" || MySys() == "mac"
    "在Unix和類Unix操做系統中使用 "bash" 做爲 "shell"
    set shell=bash
else
    "若是是在windows下使用cygwin, 則修改成cynwin的路徑
    "set shell=E:cygwininsh
endif

"設置冒號命令和搜索命令的命令歷史列表的長度
"歷史記錄的基本思想是能夠用上下箭頭鍵來找回用過的命令.
"
"實際上有四個歷史記錄, 這裏將要提到的是冒號命令歷史記錄和 "/"
"及 "?" 的搜索命令歷史記錄, "/" 和 "?"都是搜索命令,因此它們共享
"同一個歷史記錄, 另外的兩類歷史記錄分別是關於表達式和input()
"函數的輸入內容的
"
"假設你用過一次 ":set" 命令, 接着用過10次其餘的冒號命令以後又
"想要重複這個 ":set" 命令,你能夠按下 ':' 而後按10次上箭頭鍵<Up>,
"更快的辦法是:
"   ":set<Up>"
"Vim會回到上一次你以'se'開頭的命令去,這樣你離':set'命令就更
"近了一些,至少一不用按10次上箭頭<Up>了(除非這中間的10個冒號
"也都是':set'命令).
"
"上箭頭鍵<Up>會根據目前的鍵入的命令部分去跟歷史記錄進行比較,
"只有符合的纔會被列出來.若是沒有找到,你還能夠用下箭頭<Down>
"回到剛纔輸入的部分命令進行修改,或者用Ctrl-U命令所有刪除後
"重來.
"
"要查看全部的歷史記錄,用命令:
"   ":history"
"列出的是冒號的歷史記錄,要查看搜索命令的歷史記錄,用:
"   ":history /"
"
"Ctrl-P效果如同<Up>,惟一的不一樣是它不會根據你已經鍵入的部分區
"遍歷歷史,相似地,<Down>對應物事Ctrl-N"和下箭頭鍵.Ctrl-P表明
"previous,Ctrl-N表明Next
set history=400

"這段命令開啓了Vim的三種職能:
"
"1. 自動識別文件類型
"你開始編輯一個文件時,Vim就會自動識別它是何種類型的文件,比
"如說你打開了'main.c',Vim就會根據它的'.c'擴展名知道它是一個
"類型爲 "c" 的C語言源程序文件,當你編輯一個文件其第一行是
"'#!bin/sh'時,Vim又能夠據此判斷它是一個類型爲 "sh" 的shell腳
"本文件
"
"2. 用文件類型plugin腳本
"不一樣的文件類型須要搭配適合它的編輯選項.好比說你在編輯一個
" "c" 文件,那麼打開 "cindent" 新很是有用,這些對某種文件類型來
"說最經常使用的選項能夠放在一個Vim中交文件類型plugin的腳本里.
"你還能夠加上你本身寫的,請參考 "write-filetype-plain".
"
"3. 使用縮進定義文件
"編輯程序的時候,語句的縮進可讓它自動完成.Vim爲衆多不一樣的
"文件類型提供了相應的縮進方案.請參考 "filetype-indent-on" 和
" "indentexpr" 選項
filetype on
if has("eval") && v:version>=600
    filetype plugin on
    filetype indent on
endif

"設置當正在編輯的文件被外部的其它程序所修改後自動在Vim加載
if exists("&autoread")
    set autoread
endif

"能夠爲不一樣模式分別打開鼠標:
"   "n" 普通模式
"   "v" 可視模式
"   "i" 插入模式
"   "c" 命令行模式
"   "h" 編輯幫助文件時,全部前面的模式
"   "a" 全部前面的模式
"   "r" hit-enter 和 more-prompt 提示時
if exists("&mouse")
    set mouse=a
endif

"定義 "mapleader"變量
"要定義一個使用 "mapleader" 變量的映射,可使用特殊字串
" "<Leader>".它會被 "mapleader" 的字符串所替代.若是
" "mapleader" 未設置或爲空,則用反斜槓代替,例如:
"   ":map <Leader>A oanother line<Esc>"
"和下面同樣:
"   :map \A oanother line<Esc>
"可是當:
"   :let mapleader = ","
"時,又至關於:
"   :map ,A oanother line<Esc>
"
"注意: "mapleader" 的值僅當定義映射時被使用.後來改變的
" "mapleader" 不會影響到已定義的映射
let mapleader = ","
let g:mapleader = ","

"設置快速保存
"
" "nmap"表示普通模式下的映射定義,
" ":map" 和 ":map!" 命令爲多個模式定義和回顯映射.在 Vim 中你可
"以使用 ":nmap", ":vmap", ":omap", ":cmap" 和 ":imap" 命令來對每
"個不一樣的模式分別定義映射.
"當列出映射時,前面兩欄的字符表示 (可有多個):
"   字 符       模 式
"   "<Space>"   普通、可視、選擇和操做符等待
"    "n"         普通
"    "v"         可視和選擇
"    "s"         選擇
"    "x"         可視
"    "o"         操做符等待
"    "!"         插入和命令行
"    "i"         插入
"   "l"         插入、命令行和 Lang-Arg 模式的 ":lmap" 映射
"    "c"         命令行
"
" ":xa!" 保存全部修改過的緩衝區,甚至包括只讀的,但後退出Vim.不過,
"若是有無名或者其它元嬰寫入失敗的緩衝區,Vim仍然不會退出.
"
" ":w!" 和 ":w" 相似,但即便 "readonly" 已置位或者有其餘緣由寫入被拒
"絕,仍是強制寫入.
"注意:這可能會改變文件的權限和全部者,或者破壞(符號)鏈接.但在
" "cpoptions" 里加上 "W" 標誌位能夠避免這一點.
nmap <leader>x :xa!<cr>
nmap <leader>w :w!<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Colors and Font
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"打開語法高亮:
"   ":syntax enable"
"實際上,它只是執行以下命令:
"   ":source $VIMRUNTIME/syntax/syntax.vim"
"
" ":syntax enable" 命令會保持你當前的色彩設置.這樣,無論在使用此
"命令的先後,你均可以用 ":highlight" 命令設置你喜歡的顏色.若是你
"但願Vim用缺省值覆蓋你本身的,只要用:
"   ":syntax on"
if MySys()=="unix"
    if v:version<600
        if filereadable(expand("$VIM/syntax/syntax.vim"))
            syntax on
        endif
    else
        syntax on
    endif
else
    syntax on
endif

"國際化設置
" "multi_byte" 指韓國語和其餘多字節語言支持
if has("multi_byte")
    " "fileencodings" 缺省爲 "ucs-bom",這是一個字符編碼的列表,開始
    "編輯已存在的文件時,參考此選項.若是文件被讀入,Vim嘗試使用本
    "列表第一個字符編碼.若是檢測到錯誤,使用列表的下一個.若是找
    "到一個能用的編碼,設置 "fileencoding" 爲該值.若是所有失敗,
    " "fileencoding" 設爲空字符串,這意味着使用 "encoding" 的值.
    "
    "警告:轉換可能致使信息的丟失!若是 "encoding" 爲 "utf-8" (或者某
    "個其它的Unicode變種),那麼轉換的結果經過逆轉換頗有可能產生
    "相同的文本.相反,若是 "encoding" 不是 "utf-8",一些非ASCII的字符
    "可能會丟失.
    set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
   
    " "v:lang" 運行環境當前的消息locale設置.它使得Vim腳本能獲得當
    "前使用的語言.技術細節:這就是LC_MESSAGES的值.該值和系統有關.
    "
    " "=~" 爲匹配正則表達式,詳細介紹以下表:
    "               使用 "ignorecase"    匹配大小寫        忽略大小寫 ~
    "等於                   "=="            "==#"            "==?"
    "不等於                 "!="            "!=#"           "!=?"
    "大於                   ">"             ">#"            ">?"
    "大於等於               ">="            ">=#"           ">=?"
    "小於                   "<"             "<#"            "<?"
    "小於等於               "<="            "<=#"           "<=?"
    "匹配正規表達式         "=~"            "=~#"           "=~?"
    "不匹配正規表達式       "!~"            "!~#"           "!~?"
    "相同實例               "is"
    "不一樣實例               "isnot"
    "
    "設置CJK環境的編碼選擇
    if v:lang =~ "^zh_CN"
        set encoding=cp936
        set termencoding=cp936
        set fileencoding=cp936
    elseif v:lang =~ "^zh_TW"
        set encoding=big5
        set termencoding=big5
        set fileencoding=big5
    elseif v:lang =~ "^ko"
        set encoding=euc-kr
        set termencoding=euc-kr
        set fileencoding=euc-kr
    elseif v:lang =~ "^ja_JP"
        set encoding=euc-jp
        set termencoding=euc-jp
        set fileencoding=euc-jp
    endif
   
    "在必要的時候,使用utf-8替代CJK的設置
    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
        set encoding=utf-8
        set termencoding=utf-8
        set fileencoding=utf-8
    endif
endif

if has('gui_running')
    set guifont=InConsolata:h14
endif

" "ambiwidth" 缺省爲 "single"
"只有在 "encoding" 和 "utf-8" 或別的Unicode編碼時纔有效.告訴Vim怎
"麼處理東亞二義性寬度字符類(East Asian Width Class Ambiguous)(例
"如歐元符號,註冊記號,版權記號,希臘字母,西裏爾字母等等)
"
"目前有兩個可能的選擇:
" "single": 使用和US-ASCII字符相同的寬度.多數用戶但願如此.
" "double": 使用US-ASCII字符兩倍的寬度
"
"在一些 CJK 字體裏,這些字符的字形寬度徹底由它們在傳統的CJK編碼
"裏佔據字節的數目決定.那些編碼中,歐元,註冊記號,希臘/西裏爾字母
"等佔據兩個字節,於是它們在這些字體裏用'寬'字形顯示.這也包括文本
"文件裏製表用的一些畫線字符.所以若是GUI Vim使用CJK字體,或者在使
"用CJK字體的終端(模擬器)(包括帶有 "-cjkwidth" 選項的xterm)裏運
"行Vim,應把該選項設爲 "double",這樣能夠匹配這些字體裏Vim實際看
"到相關字形的寬度.在Windows 9x/ME 或 Windows 2k/XP 上,若是系統
"locale 爲 CJK locale,也應把本選項設爲 "double"
if exists("&ambiwidth")
    set ambiwidth=double
endif

" "guioptions" 選項只有在 Vim 的 GUI 版本纔有效.它是字母的序
" 列,分別描述 GUI 應該使用的部件和選項.
" 建議使用 ":set" 的 "+=" 和 "-=" 特性,這能夠避免將來版本增長
" 新的標誌位時出現的問題.

"下面是合法的標誌位字母:
"   "a" 自動選擇: 若是存在,不管何時啓動可視模式或者擴展可
"       視區域,Vim 都試圖成爲窗口系統全局選擇區的擁有者.這意
"       味着能夠粘貼高亮的可視文本到其它應用程序甚至 Vim 自身.
"       若是由於在文本之上進行了操做,或者應用程序須要粘貼選擇
"       區等緣由使得可視區域被終止,高亮文本會被自動抽出到 "*"
"       選擇寄存器裏.這樣,即便在可視模式結束之後,選擇區仍然可
"       以被粘貼到別的應用程序.
"       若是不存在,Vim 不會成爲窗口系統的全局選擇區,除非使用
"       "*" 寄存器進行抽出和刪除操做,這時該選擇區被顯式地佔有.
"       一樣適用無模式的選擇.
"
"   "A" 自動選擇無模式的選擇.相似於 "a",但僅限於無模式的選擇.
"       "guioptions"    自動選擇可視    自動選擇無模式
"           ""              --              --
"           "a"             是              是
"           "A"             --              是
"           "aA"            是              是
"
"   "c" 簡單的選擇使用控制檯對話框而不是彈出式對話框.
"
"   "e" "showtabline" 要求時,加入標籤頁.
"       "guitablabel" 可用來改變標籤文本.
"       若是沒有 "e",可能使用非 GUI 標籤頁行.
"       只有一些系統支持 GUI 標籤頁,如今包括 GTK, Motif,
"       Mac OS/X 和 MS-Windows.
"
"   "f" 前臺: 不用 fork() 從啓動外殼分叉出本 GUI 進程.用於
"       須要等待編輯器完成的程序 (例如,e-mail 程序).你也可
"       以用 "gvim -f" 或 ":gui -f" 來在前臺啓動 GUI.
"       注意: 在 vimrc 文件裏設置本選項.讀入 gvimrc 文件時
"       分叉操做可能已經發生.
"
"   "i" 使用 Vim 圖標.GTK 和 KDE 上它出如今窗口的左上角.在
"       非 GTK 的環境上,由於 X11 的限制,它是黑白的.要獲得
"       彩色圖標,見 "X11-icon"
"
"   "m" 使用菜單欄
"
"   "M" 不執行系統菜單腳本 "$VIMRUNTIME/menu.vim".
"       注意:本標誌位必須在    ".vimrc" 文件里加入,在打開語法
"       或文件類型識別以前 (執行 "gvimrc" 文件時,系統菜單
"       已經載入;而 ":syntax on" 和 ":filetype on" 命令同
"       樣會載入菜單).
"
"   "g" 灰色菜單項: 使得不活動的菜單項變灰.若是沒有包含 "g",
"       不活動的菜單項徹底不顯示.
"       特例: Athena 總會使用灰色的菜單項.
"
"   "t" 包含可撕下的菜單項.目前只用於 Win32, GTK+ 和
"       Motif 1.2 GUI.
"
"   "T" 包含工具欄.目前只用於 Win32, GTK+, Motif, Photon
"       和 Athena GUI.
"
"   "r" 右邊的滾動條老是存在.
"
"   "R" 若有垂直分割的窗口,右邊的滾動條老是存在.
"
"   "l" 左邊的滾動條老是存在.
"
"   "L" 若有垂直分割的窗口,左邊的滾動條老是存在.
"
"   "b" 底部的 (水平) 滾動條老是存在.它的大小取決於最長的可
"       見行,或者若是包含 'h' 標誌位的話,光標所在的行.詳情
"       可見 "gui-horiz-scroll"
"
"   "h" 限制水平滾動條的大小爲光標所在行的長度,以減小計算量.
"       是的,若是你真的想要,左右兩邊均可以有滾動條.詳情可見
"       "gui-scrollbars"
"
"   "v" 對話框使用垂直的按鈕佈局.若是不包含,傾向使用水平布
"       局,但若是空間不夠,仍是用垂直的佈局.
"
"   "p" 使用 X11 GUI 的指針回調.有些窗口管理器須要.若是光標
"       不閃爍或者在必定場合下變空,考慮增長此標誌位.必須在
"       啓動GUI 以前完成.在你的 "gvimrc" 裏設置.在 GUI 啓動
"       後增長或刪除不會有任何效果.
"
"   "F" 增長信息頁腳.只適用於 Motif.見 "gui-footer".
if has("gui_running")
    set guioptions-=m   " 關閉菜單欄
    set guioptions-=T   " 關閉工具欄
    set guioptions-=l   " 關閉左邊滾動條
    set guioptions-=L   " 關閉垂直分隔窗口左邊滾動條
    set guioptions-=r   " 關閉右邊滾動條
    set guioptions-=R   " 關閉垂直分隔窗口右邊滾動條

    if MySys()=="win32"
        " "autocmd" / "au" 定義自動命令
        "注意: ":autocmd" 命令不能有其餘命令緊跟其後,由於"|"
        "命令是該命令的一個組成部分.
        "
        " ":au[tocmd] [group] {event} {pat} [nested] {cmd}"
        "把 {cmd} 加到 Vim 在匹配 {pat} 模式的文件執行 {event}
        "事件時自動執行的命令列表.Vim 把 {cmd} 加到已有的自動
        "命令以後,從而使自動命令的執行順序與其定義的順序相同.
        "關於 [nested],參見 "autocmd-nested".

        "注意 ":autocmd" 的參數裏的特殊字符 (例如, "%", "<cword>")
        "在定義時不會被擴展,而是在事件發生並執行 {cmd} 的時候才
        "進行.惟一的例外是 "<sfile>" 在定義時擴展.
        "
        " "GUIEnter" 成功啓動 GUI 並打開窗口後自動命令事件.用
        " gvim 的時候,它在 VimEnter 以前發生.在 .gvimrc 裏可用
        " 它來定位窗口:
        "   ":autocmd GUIEnter * winpos 100 50"
        "
        " "si" / "simalt" 模擬 Alt-{key} 組合鍵.
        " ":si[malt] {key}"
        " {僅適用 Win32 版本}
        "
        "正常狀況下,爲了增長鍵映射 (map) 的數量,Vim 控制全部
        "Alt-{key} 組合鍵.可是這樣作可能與用 Alt-{key} 訪問菜單
        "的標準方法衝突.一個快速的解決辦法是:設置 "winaltkeys"
        "選項的值爲 "yes".可是這樣阻止了全部與Alt 鍵有關的映射.
        "另外一個辦法是:設置 "winaltkeys" 選項爲 "menu".這樣與菜
        "單有關的快捷鍵有 Windows 管理,其他的與 Alt 相關的映射
        "仍然好用.但這樣又產生了對當前狀態的依賴性.
        "要解決這個問題,就要用 ":simalt" 命令告訴 Vim
        "( "winaltkeys" 不要設置爲 "yes") 虛擬一個 Windows 風
        "格的 Alt 按鍵行爲.你能夠用它來映射 Alt 組合鍵 (或者任
        "何其它鍵) 來產生標準的 Windows 操做.下面是一些例子:
        "   ":map <M-f> :simalt f<CR>"
        "這個命令經過把 Alt-F 映射爲模擬按鍵的 Alt 和 F,使你按
        "下 Alt-F 時彈出 "文件" 菜單 (對於缺省的 Menu.vim 而言)
        "   ":map <M-Space> :simalt ~<CR>"
        "這個命令經過映射 Alt-Space 彈出 Vim 窗口的系統菜單.
        "注意: ~ 在 simalt 命令裏表明 <Space> (空格).
        "   ":map <C-n> :simalt ~n<CR>"
        "把 CTRL-N 映射成 Alt-Space + N.也就是打開窗口的系統菜
        "單,而後按 N,最小化 Vim窗口
        "
        "這個選項是模擬彈出菜單中使用最大化的快捷鍵 "x"
        if has("autocmd")
            au GUIEnter * simalt ~x
        endif
    endif

    " "colorscheme" / "colo" 載入色彩方案
    " ":colo[rscheme] {name}"
    "載入色彩方案 {name}.
    "它會在 'runtimepath' 裏搜索 "colors/{name}.vim",載入第一
    "個找到的文件.
    "要看到當前激活的色彩方案的名字 (若是有的話):
    "   ":echo g:colors_name"
    "它不能遞歸調用,因此你不能在色彩方案腳本里使用 ":colorscheme"
    "色彩方案載入後"激活 "ColorScheme" 自動命令事件.關於如何
    "編寫色彩方案文件的信息:
    "   ":edit $VIMRUNTIME/colors/README.txt"
    if v:version > 601
        colorscheme torte
    endif
else
    if v:version > 601
        colorscheme torte
    endif
endif

"當打開的文檔中含有多種語言的時候,單一使用某一種文件類型的高亮
"方式必然會很是難看,好比說一個介紹J2EE的文件,裏面必然有Java的代
"碼,也會存在不少XML的代碼,這個時候須要隨時切換不一樣的高亮方案
map <Leader>1 :set syntax=java<CR>
map <Leader>2 :set syntax=c<CR>
map <Leader>3 :set syntax=xhtml<CR>
map <Leader>4 :set syntax=python<CR>
map <Leader>5 :set ft=javascript<CR>
map <Leader>0 :syntax sync fromstart<CR>

"用 "cursorline" 高亮光標所在的屏幕行.用於方便定位光標.屏幕刷新
"會變慢.
"激活可視模式時,爲了容易看到選擇的文本,不使用此高亮.
if has("gui_running")
    if exists("&cursorline")
        set cursorline
    endif
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Fileformat
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "fileformats" / "ffs"
"給出換行符(<EOL>)的格式,開始編輯新緩衝區或者讀入文件到已有的緩
"衝區時,嘗試這些格式:
"   -   若是爲空,老是使用 "fileformat"定義的格式.不自動設置該選項.
"   -   若是設爲一個名字,老是爲打開的新緩衝區使用該格式,也爲該緩
"       衝區相應地設置 "fileformat".文件讀入已有的緩衝區時,使用
"       "fileformats" 給出的名字,無論該緩衝區設定的 "fileformat"
"       是什麼.
"   -   若是給出多於一個以逗號分隔的名字,讀入文件時會進行自動
"       <EOL>檢測.
"       開始編輯文件時,這樣檢查 <EOL>:
"       1.  若是全部行都以 <CR><NL> 結尾,而 "fileformats" 包含
"           "dos" 的話, "fileformat" 設爲 "dos".
"       2.  若是找到一個<NL>而 "fileformats" 包含 "unix"的話,
"           "fileformat"設爲 "unix".注意 若是找到的 <NL> 沒有前
"           導 <CR>, "unix" 比 "dos" 優先.
"       3.  若是 "fileformats" 包含 "mac". "fileformat" 設爲 "mac".
"           這意味着 "mac" 只有在沒有給出 "unix" 或者在文件裏沒有
"           找到 <NL>,而且沒有給出 "dos" 或者沒有在文件裏找到
"           <CR><NL> 時纔會使用.若是先選擇 "unix",但第一個 <CR> 出
"           如今第一個 <NL> 以前,而文件裏的 <CR> 比 <NL> 多的話,
"           "fileformat" 也設爲 "mac".
"       4.  若是仍是不能設置 "fileformat",使用 "fileformats" 的第
"           一個名字.
"   讀入文件到已有的緩衝區時,完成相同的步驟,但如同 "fileformat"
"   已經爲該文件合適地設置過,不改變該選項.
"若是置位 "binary",不使用 "fileformats" 的值.
"
" 對於使用 DOS 類型的 <EOL> (<CR><NL>) 的系統來講,讀入待執行的腳本
"( ":source" ) 或者 vimrc 文件時,可能進行自動 <EOL> 的檢測:
"   -   若是 "fileformats" 爲空,沒有自動檢測.使用 DOS 格式.
"   -   若是 "fileformats" 設爲一到多個名字,進行自動檢測.它基於文
"       件中的第一個 <NL>: 若是在它以前有一個 <CR>,使用 DOS 格式,
"       否則,使用 Unix格式.
"   另見 |file-formats|.
"爲了後向兼容: 若是設置此選項爲空字符串或者單一格式 (沒有包含逗號),
"復位 "textauto",不然置位 "textauto".
"注意: 若是置位 "compatible",本選項被設爲 Vi 的缺省值.相反,若是復位
" "compatible",本選項被設爲 Vim 的缺省值.
set fileformats=unix,dos,mac

"給出當前緩衝區的 <EOL> 格式,用於從文件讀入緩衝區和把緩衝區寫回文件:
"   "dos"       <CR> <NL>
"   "unix"      <NL>
"   "mac"       <CR>
"
"MS-DOS,MS-Windows,OS/2 的缺省: "dos",
"Unix 缺省: "unix",
"Macintosh 缺省: "mac"
"
"若是使用 "dos",文件尾的 CTRL-Z 被忽略.
"見 "file-formats" 和 "file-read|"
"文件使用的字符編碼見 "fileencoding".
"若是設置 "binary",忽略 "fileformat" 的值.文件輸入/輸出如同它被設爲
" "unix" 那樣.
"文件開始編輯時,若是 'fileformats' 非空而 'binary' 關閉,本選項被
"自動設置.
"開始編輯文件後,若是設置該選項, "modified" 選項被置位,由於文件被認爲
"和當初寫入時已經不一樣.
"本選項在 "modifiable" 關閉時不能改變.
"
"爲了後向兼容: 若是本選項設爲 "dos",置位 "textmode",不然,復位之.
"
"這裏的意思是定義快速轉換文件格式的快捷鍵映射
nmap <leader>fd :set ff=dos<cr>
nmap <leader>fu :set ff=unix<cr>
nmap <leader>fm :set fm=unix<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => VIM userinterface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "scrolloff" / "so"    (缺省爲 0) 光標上下兩側最少保留的屏幕行數
"這使你工做時總有一些可見的上下文.咱們這裏設置的主要用處實際上是
"能夠用鼠標單擊屏幕的前N行或者後N行來直接進行屏幕的上下滾動.對
"於習慣了鼠標操做的用戶來講將會很是的方便.
"
"若是你設置此選項爲很大的值 (好比 999),光標所在的行將總定位在
"窗口的中間位置 (除非你很是靠近文件開始或者結束的地方,或者有長
"行迴繞).
"水平滾動見 'sidescrolloff'.
"注意: 若是置位 'compatible',該選項被設爲 0.
set so=0

" "wildmenu" / "wmnu"   (缺省關閉) 命令行補全以加強模式運行
" {僅當編譯時加入 "+wildmenu" 特性纔有效}
" "wildmenu" 打開時,命令行補全以加強模式運行,按下 "wildchar"
" (一般是 <Tab>) 啓動補全.這時,在命令行的上方顯示可能的匹配,
" 而後高亮首個匹配 (若是有狀態行,覆蓋之).顯示前項/後項匹配的
" 熱鍵,如 <Tab> 或 CTRL-P/CTRL-N,移動高亮到合適的匹配上.
"
" 使用 "wildmode" 時,指定 "full" 會啓用 "wildmenu" 模式.
" "longest" 和 "list" 則不會啓動 "wildmenu" 模式.
"
" 若是多個匹配超過一行,在右側顯示 ">" 和/或在左側顯示 "<".需
" 要的話,滾動狀態行.
"按下不用於選擇補全項的鍵時,放棄 "wildmenu" 模式.
"
" "wildmenu" 激活時,下面的鍵有特殊含義:
"   "<Left>" / "<Right>"    選擇前項/後項匹配 (相似於
"                           CTRL-P/CTRL-N)
"   "<Down>"                文件名/菜單名補全中: 移進子目錄
"                           和子菜單.
"   "<CR>"                  菜單補全中,若是光標在句號以後:
"                           移進子菜單.
"   "<Up>"                  文件名/菜單名補全中: 上移到父目
"                           錄或父菜單.
"
"這使得控制檯上有菜單可用 "console-menus"
"若是你喜歡 <Left> 和 <Right> 鍵移動光標而不是選擇不一樣的匹
"配,用:
"   ":cnoremap <Left> <Space><BS><Left>"
"   ":cnoremap <Right> <Space><BS><Right>"
"
" "WildMenu" 高亮用於顯示當前匹配 "hl-WildMenu".
set wildmenu

" "ruler" / "ru" (缺省關閉) 標尺
" {僅當編譯時加入 "+cmdline_info" 特性纔有效}
"顯示光標位置的行號和列號,逗號分隔.若是還有空間,在最右端顯
"示文本在文件中的相對位置:
"   "Top"   首行可見
"   "Bot"   末行可見
"   "All"   首末兩行均可見
"   "45%"   文件中的相對位置
"若是設置 "rulerformat",它決定標尺的內容.
"每一個窗口都有本身的標尺.若是窗口有狀態行,標尺在那裏顯示.否
"則,它顯示在屏幕的最後一行上.若是經過 "statusline" 給出狀
"態行 (亦即,非空),該選項優先於 "ruler" 和 "rulerformat".
"若是顯示的字符數不一樣於文本的字節數 (好比,TAB 或者多字節字
"符),同時顯示文本列號 (字節數) 和屏幕列號,以連字符分隔.
"空行顯示 "0-1"
"空緩衝區的行號也爲零: "0,0-1"
"若是置位 "paste" 選項,本選項被複位.
"若是你不想一直看到標尺但想知道如今在哪裏,使用 "g CTRL-G"
"注意: 若是置位 "compatible",該選項被複位
set ruler

" "cmdheight" / "ch" (缺省爲 1)    命令行使用的屏幕行數
"有助於避免 "hit-enter" 提示.
"此選項值保存在每一個標籤頁裏,從而每一個標籤頁可有不一樣的值.
set cmdheight=2

" ":nu" / ":number" 顯示行號
" ":[range]nu[mber] [count] [flags]"
"和 ":print" 相同,但每行以前顯示行號 (也參見 "highlight"
"和 "numberwidth" 選項).
set nu

" "lazyredraw" / "lz"   (缺省關閉)
"若是置位本選項,執行宏,寄存器和其它不經過輸入的命令時屏
"幕不會重畫.另外,窗口標題的刷新也被推遲.要強迫刷新,使用
" ":redraw".
set lz

" "hidden" / "hid"  (缺省關閉)
"若是關閉, "abandon" 放棄時卸載緩衝區.若是打開, "abandon"
"放棄時隱藏緩衝區.固然,若是緩衝區仍然在別的窗口裏顯示,
"它不會被隱藏.
"在緩衝區列表裏移動的命令有時會隱藏緩衝區,即便關閉 "hidden"
"選項也是如此,條件是: 緩衝區被修改過, "autowrite" 關閉
"或者不能寫入,而且使用 "!" 標誌位.另見 "windows.txt".
"
"若是隻想隱藏一個緩衝區,使用 "bufhidden" 選項.
" ":hide {command}" 爲單個命令關閉本選項 ":hide".
"警告: 對隱藏緩衝區的修改很容易忘記. ":q!" 或 ":qa!" 時
"三思然後行!
set hid

" "backspace" / "bs" (缺省爲 "")
"影響 <BS>,<Del>,CTRL-W 和 CTRL-U 在插入模式下的工做方
"式.它是逗號分隔的項目列表.每一個項目容許一種退格刪除的內
"容:
"   值            效果
"   "indent"    容許在自動縮進上退格
"   "eol"       容許在換行符上退格 (鏈接行)
"   "start"     容許在插入開始的位置上退格;CTRL-W 和
"               CTRL-U 到達插入開始的位置時停留一次.
"
"若是該值爲空,使用 Vi 兼容的退格方式.
"
"爲了和 5.4 及更早的版本後向兼容:
"   值          效果
"   "0"         等同於 ":set backspace=" (Vi 兼容)
"   "1"         等同於 ":set backspace=indent,eol"
"   "2"         等同於 ":set backspace=indent,eol,start"
"
"若是你的 <BS> 或 <Del> 鍵不合你的指望,見 ":fixdel".
"注意: 若是置位 "compatible",該選項被設爲 "".
set backspace=eol,start,indent

" "whichwrap" / "ww"    (Vim 缺省: "b,s",Vi 缺省: "")
"使指定的左右移動光標的鍵在行首或行尾能夠移到前一行
"或者後一行.鏈接這些字符,可讓全部指定的鍵都有此功能:
"       字符    鍵          模式
"       "b"    <BS>         普通和可視
"       "s"    <Space>      普通和可視
"       "h"    "h"          普通和可視 (不建議)
"       "l"    "l"          普通和可視 (不建議)
"       "<"    <Left>       普通和可視
"       ">"    <Right>      普通和可視
"       "~"    "~"          普通
"       "["   <Left>        插入和替換
"       "]"    <Right>      插入和替換
"只容許光標鍵進行迴繞.
"若是移動鍵和刪除和改變操做符一塊兒使用時,<EOL> 也被看做一個
"字符.這使得光標跨過行尾時, "3h" 和 "3dh" 效果不一樣."這也適
"用於 "x" 和 "X",由於它們分別和 "dl" 以及 "dh" 相同.若是這
"麼用,你可能想用映射 ":map <BS> X"來使退格"鍵刪除光標以前的
"字符.
"若是包含 'l',位於行尾時若是在操做符以後使用它,不會移動到下
"一行.這樣 "dl", "cl", "yl" 等都能正常工做.
"注意: 若是置位 "compatible",本選項被設爲 Vi 的缺省值.相反,
"若是復位 "compatible",本選項被設爲 Vim 的缺省值.
set whichwrap+=<,>,h,l

" "incsearch" / "is"    (缺省關閉)
"{僅當編譯時加入 "+extra_search" 特性纔有效}
"輸入搜索命令時,顯示目前輸入的模式的匹配位置.
"匹配的字符串被高亮.若是該模式不合法或者沒有匹配,不顯示任何
"東西.屏幕會常常刷新,因此只有對快速終端,這纔有意義.
"注意:會顯示匹配,但若是找不到匹配和按 <Esc> 的時候,光標會回
"到原來的位置.你仍然須要用 <Enter> 完成搜索命令纔會移動光標
"到匹配位置.
"編譯時加入 "+reltime" 特性時,Vim 只會搜索大概半秒鐘.若是模
"式太過複雜和/或有不少文本存在,不必定能找到匹配.這是爲了不
"Vim 在輸入模式的時候掛起.
"
"能夠用 "highlight" 的 "i" 標誌位設置高亮.另見: "hlsearch".
"   "CTRL-L" 可用來在命令行上給當前匹配以後增長一個字符.
"   "CTRL-R" / "CTRL-W" 可用來在當前匹配的尾部增長單詞,排除
"                       已經輸入的部分.
"注意: 若是置位 "compatible",該選項被複位.
set incsearch

"某些字符在模式中是按本義出現的.它們匹配自身.然而,當前面有一
"個反斜槓時,這些字符具備特殊的含義.
"
"另一些字符即便沒有反斜槓也表明特殊的意思,它們反而須要一個
"反斜槓來匹配按本義出現的自身.
"
"一個字符是否按本義出現取決於 "magic" 選項以及下面將解釋的條
"目.
"使用 "\m" 會使得其後的模式的解釋方式就如同設定了 "magic" 選
"項同樣.並且將忽略 "magic" 選項的實際值.
"使用 "\M" 會使得其後的模式的解釋方式就如同設定了 "nomagic"
"選項同樣.
"
"使用 "\v" 會使得其後的模式中全部 '0'-'9','a'-'z','A'-'Z'
"和 '_' 以外的字符都看成特殊字符解釋.
"使用 "\V" 會使得其後的模式中只有反斜槓有特殊的意義.
"
"示例:
"在這以後:  \v      \m      \M      \V      匹配
"                 'magic' 'nomagic'
"           $       $       $       \$      匹配行尾
"           .       .       \.      \.      匹配任何字符
"           *       *       \*      \*      前面匹配原的任意次重複
"           ()      \(\)    \(\)    \(\)    組成爲單個匹配原
"           |       \|      \|      \|      分隔可選分支
"           \a      \a      \a      \a      字母字符
"           \\      \\      \\      \\      反斜槓 (按本義)
"           \.      \.      .       .       英文句號 (按本義)
"           \{      {       {       {       '{' (按本義)
"           a       a       a       a       'a' (按本義)
"
"{僅 Vim 支持 \m,\M,\v 和 \V}
"
"建議始終將 "magic"選項保持在缺省值 - "magic".這能夠避免移
"植性的麻煩.要使模式不受該選項值的影響,在模式前面加上 "\m"
"或 "\M".
set magic

"設置Vim靜音
" "errorbells" / "eb" (缺省關閉)
"錯誤信息響鈴 (鳴叫或屏幕閃爍).只有對錯誤信息有意義.不少沒有消息的錯誤
"也會使用該響鈴 (好比,普通模式裏按 <Esc>).
"
" "visualbell" / "vb" (缺省關閉)
"使用可視響鈴代替鳴叫.顯示可視響鈴的終端代碼由 "t_vb" 給出.若是既不想
"要響鈴也不想要閃爍,使用 ":set vb t_vb=".
"注意: GUI 啓動時,'t_vb' 復位爲缺省值.你可能想在 |gvimrc| 裏再次設置之.
"在 GUI 裏, "t_vb" 缺省爲 "<Esc>|f",反轉顯示 20 毫秒.若是你想使用別的
"時間,可設 "<Esc>|40f",其中 40 是毫秒計的時間.
"在 Amiga 上沒有用,你總會獲得屏幕閃爍.
set noerrorbells
set novisualbell
set t_vb=

" "showmatch" / "sm"    (缺省關閉)
"插入括號時,短暫地跳轉到匹配的對應括號.只有在屏幕上能看到匹配時纔會進
"行跳轉.顯示匹配的時間用 "matchtime" 設置.
"若是沒有匹配會響鈴 (和匹配可否看到無關).置位 "paste" 時,復位本選項.
"若是 "cpoptions" 裏沒有 "m" 標誌位,接着輸入字符會當即把光標移動到它應
"該在的位置.
" "guicursor" 的 "sm" 域說明顯示匹配時,如何設置光標形狀和閃爍.
" "matchpairs" 選項可指定顯示匹配所用的字符.用 "rightleft" 和 "revins"
"查找反方向的匹配.
"移動時要高亮匹配,另見 matchparen 插件 "pi_paren.txt".
set showmatch

" "matchtime" / "mat"   (缺省爲 5)
"若是置位 'showmatch',顯示配對括號的十分之一秒數.
"注意 這不是毫秒數.
set mat=4

" "hlsearch" / "hls"    (缺省關閉)
"{僅當編譯時加入 "+extra_search" 特性纔有效}
"若是有上一個搜索模式,高亮它的全部匹配.使用高亮的類型能夠用 "highlight"
"選項的 "l" 位設置.缺省,使用 "Search" 高亮組.
"注意: 只有匹配的文本被高亮,位移此處不予考慮.
"另見: "incsearch" 和 ":match".
"
"若是你厭倦老是看到高亮匹配,用 ":nohlsearch" 或者 ":noh" 能夠暫時關閉.
"一旦使用搜索命令,高亮會從新出現.
"
" "redrawtime" 指定尋找匹配會花費的最大時間.
"若是搜索模式能夠匹配換行符,Vim 會試圖高亮全部的匹配文本.不過,這依賴
"於搜索從哪裏開始.若是是窗口的第一行,或者關閉摺疊之下的第一行,那麼從
"它們不會顯示的上一行開始的匹配不會在新顯示的行上繼續.
"注意: 若是置位 "compatible",該選項被複位.
set hlsearch

""""""""""""""""""""""""""""""
" => Statusline
""""""""""""""""""""""""""""""
"格式化狀態欄
if performance_mode
else
    " "laststatus" / "ls" (缺省爲 1)
    "本選項的值影響最後一個窗口什麼時候有狀態行:
    "   "0" 永不
    "   "1" 只有在有至少兩個窗口時
    "   "2" 老是
    "若是你有多個窗口,有狀態行會使屏幕看起來好一些,但它會佔據一個屏幕行.
    set laststatus=2

    " "statusline" / "stl"  (缺省爲空)
    "{僅當編譯時加入 "+statusline" 特性纔有效}"
    "若是非空,本選項決定狀態行的內容.另見 "status-line"
    "
    "此選項包含 printf 風格的 '%' 項目,中間能夠間雜普通文本.每一個狀態行項
    "目有以下形式:
    "   "%-0{minwid}.{maxwid}{item}"
    "除了 {item} 之外,每一個字段都是可選的.單個百分號能夠用 "%%" 給出.最多
    "可給出 80 個項目.
    "
    "若是此選項以 "%!" 開始,它用做表達式.計算此表達式的結果用做選項值.例
    "如:
    "   ":set statusline=%!MyStatusLine()"
    "返回值能夠包含 %{} 項目,它還會被繼續計算下去.
    "
    "若是計算選項時有錯誤,會把它清空以防未來繼續出錯.不然屏幕更新會陷入循
    "環.
    "
    "注意 若是設置本選項 (而且 "laststatus" 爲 2 的話), "ruler" 的惟一效
    "果是控制 "CTRL-G" 的輸出.
    "
    "   域          含義
    "   "-"            左對齊項目.若是 minwid 大於項目的長度,缺省是右對齊.
    "   "0"         數值項目前面用零填補. '-' 更優先.
    "   "minwid"    項目的最小寬度,以 '-' 和 '0' 補空.該值不能超過 50.
    "   "maxwid"    項目的最大寬度.若是超過,在文本項目的左側截短,以'<'代
    "               替.數值項目則往下移到 maxwid-2 個數位,而後跟 '>'number,
    "               其中的 number 是丟失的數位,這很是相似於指數記法.
    "   "item"      單個字符的代碼,下面給出描述.
    "
    "下面是可能狀態行項目的描述.其中,"項目" 的第二個字符表明類型:
    "   "N" 表明數值型
    "   "S" 表明字符串型
    "   "F" 表明下面描述的標誌位
    "   "-" 不適用
    "
    "項目   含義
    "f S    緩衝區的文件路徑,保持輸入的形式或相對於當前目錄.
    "F S    緩衝區的文件完整路徑.
    "t S    緩衝區的文件的文件名 (尾部).
    "m F    修改標誌位,文本是 "[+]";若 "modifiable" 關閉則是 "[-]".
    "M F    修改標誌位,文本是 ",+" 或 ",-".
    "r F    只讀標誌位,文本是 "[RO]".
    "R F    只讀標誌位,文本是 ",RO".
    "h F    幫助緩衝區標誌位,文本是 "[help]".
    "H F    幫助緩衝區標誌位,文本是 ",HLP".
    "w F    預覽窗口標誌位,文本是 "[Preview]".
    "W F    預覽窗口標誌位,文本是 ",PRV".
    "y F    緩衝區的文件類型,如 "[vim]".見 "filetype".
    "Y F    緩衝區的文件類型,如 ",VIM".見 "filetype'".
    "       {僅當編譯時加入 "+autocmd" 特性纔有效}
    "k S    "b:keymap_name" 的值或使用 ":lmap" 映射時的 "keymap":
    "       "<keymap>".
    "n N    緩衝區號.
    "b N    光標所在字節的值.
    "B N    同上,以十六進制表示.
    "o N    光標所在字節在文件中的字節偏移,第一個字節爲 1.
    "       助記: 從文件開始的偏移 (Offset) (加上 1)
    "       {僅當編譯時加入 "+byte_offset" 特性纔有效}
    "O N    同上,以十六進制表示.
    "N N    打印機頁號.(只用於 'printheader" 選項.)
    "l N    行號.
    "L N    緩衝區裏的行數.
    "c N    列號.
    "v N    虛擬列號.
    "V N    虛擬列號,表示爲 -{num}.若是等於 "c" 的值,不顯示.
    "p N    行數計算在文件位置的百分比,如同 "CTRL-G" 給出的那樣.
    "P S    顯示窗口在文件位置的百分比,相似於 "ruler" 描述的百分比.長度
    "       老是爲 3.
    "a S    參數列表狀態,就像缺省標題裏的那樣.({current} of {max})
    "       若是參數列表裏的文件數爲零或一,空字符串.
    "{ NF   計算 "%{" 和 "}" 之間的表達式,並返回其結果替代.注意 結束的
    "       "}" 以前沒有 "%".
    "( -    項目組的開始.能夠用來爲某組項目設置寬度和對齊.後面某處必須有
    "       "%)".
    ") -    項目組的結束.不能指定寬度域.
    "T N    用於 'tabline': 標籤頁 N 標籤的開始.最後一個標籤以後用 "%T".
    "       鼠標點擊時用此信息.
    "X N    用於 "tabline": 關閉標籤頁 N 標籤的開始.最後一個標籤以後用
    "       "%T".
    "       例如: "%3Xclose%X",用 "%999X" 來表明 "關閉當前標籤頁" 那個符
    "       號.鼠標點擊時用此信息.
    "< -    若是行過長,在什麼地方截短.缺省是在開頭.不能指定寬度域.
    "= -    左對齊和右對齊項目之間的分割點.不能指定寬度域.
    "# -    設置高亮組.必須後面跟名字,而後又是 "#".這樣, "%#HLname#" 代
    "       表高亮組 HLname.包括非當前窗口的狀態行都使用相同的高亮組.
    "* -    設置高亮組爲 User{N},其中的 {N} 取自 minwid 域,好比 %1*.用
    "       %* 或者 %*0 能夠恢復 normal 高亮.User{N} 和 StatusLine 的區
    "       別也會應用到非當前窗口的狀態行使用的 StatusLineNC 上.
    "       數字 N 必須從 1 到 9.見 "hl-User1..9"
    "
    "顯示標誌位時,若是它緊跟在普通文本以後,Vim 刪除以前的前導逗號.這使得
    "下面例子裏使用的標誌位顯示看起來很舒服.
    "
    "若是組內的全部項目都是空字符串 (好比,標誌位沒有設置) 而該組沒有設置
    "minwid,整個組成爲空字符串.這使得下面這樣的組徹底從狀態行上消失,若是
    "沒有標誌位被置位的話.
    "   ":set statusline=...%(\ [%M%R%H]%)..."
    "要當心,每次顯示狀態行時都要計算此表達式.當前緩衝區和當前窗口會臨時設
    "爲目前要顯示的狀態行所屬的窗口 (緩衝區),而表達式會使用此上下文計算.
    "變量 "actual_curbuf" 被設爲實際的當前緩衝區的 "bufnr()" 號.
    "
    "可能在沙盤 "sandbox" 裏計算 "statusline" 選項.見 "sandbox-option".
    "
    "計算 "statusline" 時不容許修改文本或者跳到其它窗口 "textlock".
    "
    "若是狀態行在你但願時沒有更新 (如在設置完表達式裏使用的某變量以後),設
    "置選項能夠強制進行更新而無須更改其值.例如:
    "   ":let &ro = &ro"
    "
    "若是結果全是數字,用做顯示時把它做爲數值處理.不然結果做爲文本,並應用
    "上面描述的規則.
    "
    "當心表達式裏的錯誤.它們可能使 Vim 不可用!
    "若是你被困住,按住 ':' 或 'Q' 來獲得提示,而後退出並用 "vim -u NONE"
    "來編輯 .vimrc 或者別的什麼地方,以修正問題.
    "
    "示例:
    "模擬 "ruler" 設置的標準狀態行
    "   ":set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P"
    "相似,但加上光標所在字符的 ASCII 值 (相似於 "ga")
    "   ":set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P"
    "顯示字節偏移和字節值,用紅色標記已修改標誌位.
    "   ":set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'"
    "   ":hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red"
    "若是載入的是壓縮文件,顯示 ,GZ 標誌
    "   ":set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h..."
    "並在 |:autocmd| 裏:
    "   ":let b:gzflag = 1"
    "或:
    "   ":unlet b:gzflag"
    "還要定義此函數:
    "   ":function VarExists(var, val)"
    "   ":    if exists(a:var) | return a:val | else | return '' | endif"
    "   ":endfunction"
    set statusline=
    set statusline+=%2*%-3.3n%0*\   "緩衝器名
    set statusline+=%f\             "文件名
    set statusline+=%h%1*%m%r%w%0*  "標記符
    set statusline+=[
    if v:version >= 600
        set statusline+=%{strlen(&ft)?&ft:'none'},  "文件類型
        set statusline+=%{&encoding},               "編碼類型
    endif
    set statusline+=%{&fileformat}]                 "文件格式
    if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim"))
        set statusline+=\ %{VimBuddy()}             "添加VimBuddy插件
        "這個插件會在狀態欄上加一個笑臉,鼻子會隨着光標移動而改變
    endif
    set statusline+=%=                              "左右對齊的分割點
    set statusline+=%F\                             "文件的完整路徑
    set statusline+=%2*0x%-8B\                      "16進製表示當前字符
    set statusline+=%-14.(%l,%c%V%)\ %<%P           "偏移量

    " special statusbar for special windows
    if has("autocmd")
        au FileType qf
                    \ if &buftype == "quickfix" |
                    \ setlocal statusline=%2*%-3.3n%0* |
                    \ setlocal statusline+=\ \[Compiler\ Messages\] |
                    \ setlocal statusline+=%=%2*\ %<%P |
                    \ endif

        fun! FixMiniBufExplorerTitle()
            if "-MiniBufExplorer-" == bufname("%")
                setlocal statusline=%2*%-3.3n%0*
                setlocal statusline+=\[Buffers\]
                setlocal statusline+=%=%2*\ %<%P
            endif
        endfun

        if v:version>=600
            au BufWinEnter *
                        \ let oldwinnr=winnr() |
                        \ windo call FixMiniBufExplorerTitle() |
                        \ exec oldwinnr . " wincmd w"
        endif
    endif

    " "titlestring" (缺省爲 "") 設置窗口標題欄
    "{僅當編譯時加入 "+title" 特性纔有效}
    "若是此選項不爲空,用來設置窗口的標題.只有在 "title" 選項打開時纔會發
    "生.
    "只有終端支持設置窗口標題時纔可用 (目前有 Amiga 控制檯,Win32 控制檯,
    "全部的 GUI 版本和帶有非空的 "t_ts" 選項的終端).
    "若是 Vim 編譯時定義 HAVE_X11,在可能的狀況下恢復原來的標題 "X11".
    "若是本選項包含 printf 風格的 "%" 項目,依照 "statusline" 使用的規則
    "進行擴展.
    "例如:
    "   ":auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")"
    "   ":set title titlestring=%<%F%=%l/%L-%P titlelen=70"
    " "titlelen" 的值用來在可用空間的中間或右側對齊項目.
    "有的人喜歡文件名放在前面:
    " ":set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)"
    "注意 "%{ }" 的使用,以及用於獲得不含文件名的文件名路徑的表達式.只有在
    "必要時, "%( %)" 構造纔會加入分隔的空格.
    "注意: "titlestring" 使用特殊字符可能會使顯示引發混亂 (好比,若是它包含
    "CR 或者 NL 字符的話).
    "{僅當編譯時加入 "+statusline" 特性纔有效}
    if has('title') && (has('gui_running') || &title)
        set titlestring=
        set titlestring+=%f\                "文件名
        set titlestring+=%h%m%r%w           "標記符
        set titlestring+=\ -\ %{v:progname} "程序名
    endif
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Moving around and tab
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Map space to /
map <space> /

"爲窗口跳轉從新定義鍵映射
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l


"Tab configuration
map <leader>tn :tabnew %<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove

if v:version>=700
    set switchbuf=usetab
endif

if exists("&showtabline")
    set stal=2
endif

"Moving fast to front, back and 2 sides ;)
imap <m-$> <esc>$a
imap <m-0> <esc>0i
imap <D-$> <esc>$a
imap <D-0> <esc>0i

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General Autocommand
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Switch to current dir
map <leader>cd :cd %:p:h<cr>


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Parenthesis/bracket expanding
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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 $w <esc>`>a"<esc>`<i"<esc>

"Map auto complete of (, ", ', [
"http://www.vim.org/tips/tip.php?tip_id=153
"

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General Abbrev
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Comment for C like language
if has("autocmd")
    au BufNewFile,BufRead *.js,*.htc,*.c,*.tmpl,*.css ino $c /**<cr> **/<esc>O
endif

"My information
ia xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>
"iab xname Amir Salihefendic

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Editing mappings etc.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Remap VIM 0
map 0 ^

"Move a line of text using control
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

if MySys() == "mac"
    nmap <D-j> <M-j>
    nmap <D-k> <M-k>
    vmap <D-j> <M-j>
    vmap <D-k> <M-k>
endif


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Buffer realted
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Fast open a buffer by search for a name
"map <c-q> :sb

"Open a dummy buffer for paste
map <leader>q :e ~/buffer<cr>

"Restore cursor to file position in previous editing session
set viminfo='10,"100,:20,%,n~/.viminfo

"用 "rot13" 編碼整個文件
" "gg" 到文件首行首字符, "V" 進入Visual-Line模式, "G"到文件末行首字符,
"這樣就選中了整篇文章,而後 "g?" 就是用 "rot13" 編碼整個文件
"
"關於 "rot13":
" "ROT13" 是一種簡單的編碼,它把字母分紅先後兩組,每組13個,編碼和譯碼的
" 算法相同,僅僅交換字母的這兩個部分,即:
"   [a..m] --> [n..z] 和 [n..z] --> [a..m]
" "ROT13" 用簡易的手段使得信件不能直接被識別和閱讀,也不會被搜索匹配程
" 序用一般的方法直接找到.常常用於 USENET 中發表一些攻擊性或使人不快的
" 言論或有簡單保密須要的文章.
" 因爲 "ROT13" 是自逆算法,因此,譯碼和編碼是同一個過程.
map <F9> ggVGg?

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Files and backup
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "backup" / "bk"   (缺省關閉)  覆蓋文件前建立一個備份.
"文件成功寫入後保留該備份.若是你不想保留備份文件,但但願寫入期間能有備
"份,復位該選項並置位 "writebackup" 選項(這是缺省行爲).若是你徹底不想
"要備份文件,同時復位兩個選項 (若是你的文件系統差很少滿了,這會有用).更
"多的解釋可見 "backup-table".
"若是匹配 "backupskip" 模式,不管如何都不會創建備份.
"若是設置 "patchmode",備份文件會換名成爲文件的舊版本.
"注意: 若是置位 "compatible",該選項被複位.
"
" "writebackup" / "wb" (有 "+writebackup" 特性時缺省打開,不然缺省關閉)
"覆蓋文件前創建備份.文件成功寫入後,除非 "backup" 選項也被打開,刪除該備
"份.若是你的文件系統幾乎已滿,復位此選項. "backup-table" 還有相關的解釋.
"若是 "backupskip" 模式匹配,不管如何都不會創建備份.
"注意: 若是置位 "compatible", 該選項被設爲缺省值.
set nobackup
set nowritebackup

" "swapfile" / "swf"    (缺省打開)
"緩衝區使用交換文件.若是不想爲特定緩衝區使用交換文件,能夠復位本選項.
"例如,包含即便 root 也不該獲得的機密信息.要當心: 全部的文本都在內存:
"   - 不要在大文件裏使用.
"   - 沒法恢復!
"交換文件只有在 "updatecount" 不爲零而且置位 "swapfile" 時纔會存在.
"復位 "swapfile" 時,當即刪除當前緩衝區的交換文件.若是置位 "swapfile"
"而且 "updatecount" 非零,當即創建交換文件.
"另見 "swap-file"和 "swapsync".
"
"此選項能夠和 "bufhidden" 和 "buftype" 一塊兒使用,指定特殊類型的緩衝區.
"見 "special-buffers"
set noswapfile

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Folding
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "foldenable" / "fen"  (缺省打開)
"{僅當編譯時加入 "+folding" 特性纔有效}
"若是關閉,全部的摺疊都被打開.本選項用於在文本顯示的徹底打開摺疊和保留
"摺疊之間 (包括手動打開或關閉的摺疊) 快速切換."zi" 命令切換本選項.
"若是 "foldenable" 關閉, "foldcolumn" 會保持空白.
"創建新摺疊或者關閉摺疊的命令置位本選項.見 "folding".
"
"摺疊方法
"可用選項 "foldmethod" 來設定摺疊方法.
"設置選項 "foldmethod" 爲非 "manual" 的其它值時,全部的摺疊都會被刪除並
"且建立新的.若是設置成 "manual",將不去除已有的摺疊.能夠利用這一點來先
"自動定義摺疊,而後手工調整.
"
"有 6 種方法來選定摺疊:
"   "manual"    手工定義摺疊
"   "indent"    更多的縮進表示更高級別的摺疊
"   "expr"      用表達式來定義摺疊
"   "syntax"    用語法高亮來定義摺疊
"   "diff"      對沒有更改的文本進行摺疊
"   "marker"    對文中的標誌摺疊
"
"選取了摺疊方式後,咱們就能夠對某些代碼實施咱們須要的摺疊了,因爲我使用
" "indent" 稍微多一些,故以它的使用爲例:
"若是使用了 "indent"方式,vim會自動的對大括號的中間部分進行摺疊,咱們可
"以直接使用這些現成的摺疊成果.
"在可摺疊處(大括號中間):
"   "zc"    摺疊
"   "zC"    對所在範圍內全部嵌套的摺疊點進行摺疊
"   "zo"    展開摺疊
"   "zO"    對所在範圍內全部嵌套的摺疊點展開
"   "[z"    到當前打開的摺疊的開始處
"   "]z"    到當前打開的摺疊的末尾處
"   "zj"    向下移動.到達下一個摺疊的開始處.關閉的摺疊也被計入.
"   "zk"    向上移動到前一折疊的結束處.關閉的摺疊也被計入."
if exists("&foldenable")
    set fen
    set foldmethod=indent
endif

" "foldlevel" / "fdl"   (缺省: 0)   設置代碼摺疊級別
"{僅當編譯時加入 "+folding" 特性纔有效}
"設置摺疊級別: 高於此級別的摺疊會被關閉.
"設置此選項爲零關閉全部的摺疊.更高的數字關閉更少的摺疊.
" "zm", "zM" 和 "zR" 等命令設置此選項.
"見 "fold-foldlevel".
if exists("&foldlevel")
    set fdl=0
endif


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Text option
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "expandtab" / "et"    (缺省關閉)
"插入模式裏: 插入 <Tab> 時使用合適數量的空格.若是 "autoindent" 打開,
" ">" 和 "<" 命令使用空格進行縮進. "expandtab" 打開時,要插入實際的制
"表,可用 CTRL-V<Tab>.另見 ":retab" 和 "ins-expandtab".
"注意: 若是置位 "compatible",該選項被複位.
set expandtab

" "shiftwidth" / "sw"   (缺省爲 8)
"(自動) 縮進每一步使用的空白數目.用於 "cindent", ">>", "<<" 等.
set shiftwidth=4

" "softtabstop" / "sts" (缺省爲 0)
"執行編輯操做,如插入 <Tab> 或者使用 <BS> 時,把 <Tab> 算做空格的數目.
"感受上,你就像使用單個 <Tab> 同樣,而實際上使用的是空格和 <Tab> 的混
"合.這能夠用來維持 "ts" 的設置爲標準值 8 不變,但編輯時感受就像它被設
"爲 "sts" 那樣.不過, "x" 這樣的命令仍然會在實際的字符上操做.
"若是 "sts" 爲零,關閉此特性.
"
"若是置位 "paste" 選項, "softtabstop" 被設爲 0.
"另見 "ins-expandtab". 若是沒有置位 "expandtab",經過使用 <Tab>,使空
"格數目減到最小.
" "cpoptions" 裏的 "L" 標誌位改變製表在 "list" 置位時的使用方式.
"注意: 若是置位 "compatible",該選項被設爲 0.
set softtabstop=4

" "tabstop" / "ts"  (缺省爲 8)
"文件裏的 <Tab> 表明的空格數.另見 ":retab" 命令和 "softtabstop" 選項.
"
"注意: 設置 "tabstop" 爲不一樣於 8 的值可能使你的文件在不少地方看起來不
"正確 (好比,打印時).
"
"Vim 裏有四個主要的使用製表的方法:
"1. 老是保持 "tabstop" 爲 8,設置 "softtabstop" 和 "shiftwidth" 爲 4
"   (或 3 或任何你想要的) 而後用 "noexpandtab".這時,Vim 使用製表和空
"   格的混合,但輸入 <Tab> 或 <BS> 鍵就像每一個製表佔用 4 (或 3) 個字符
"   同樣.
"2. 設置 "tabstop" 和 "shiftwidth" 爲想要的任何值,而後用 "expandtab".
"   這樣,你老是插入空格.改變 "tabstop" 時毫不會影響排版.
"3. 設置 "tabstop" 和 "shiftwidth" 爲想要的任何值,而後用 "modeline",
"   再次編輯時就會從新設置這些值.這隻適用於老是使用 Vim 進行文件編輯
"   的狀況.
"4. 永遠把 "tabstop" 和 "shiftwidth" 設爲相同的值,並用 "noexpandtab".
"   這樣,就能夠 (只適用於行首的縮進) 使用任何別人的製表位設置.不過,
"   若是你這麼作,最好在第一個非空白字符以後想插入製表時以空格代替.否
"   則,改變 "tabstop" 時,註釋等的對齊會不正確.
set tabstop=4

" "smarttab" / "sta"    (缺省關閉)
"若是打開,行首的 <Tab> 根據 "shiftwidth" 插入空白. "tabstop" 或
" "softtabstop" 用在別的地方.<BS> 刪除行首 "shiftwidth" 那麼多的空白.
" 若是關閉,<Tab> 老是根據 "tabstop" 或 "softtabstop" 決定插入空白的數\
" 目. "shiftwidth" 只用於文本左移或右移 "shift-left-right".
" 插入空白的具體方式 (製表仍是空格) 取決於 "expandtab" 選項.另見
" "ins-expandtab".若是沒有置位 "expandtab",經過使用 <Tab>,使空格數目
" 減到最小.
" 注意: 若是置位 "compatible",該選項被複位.
set smarttab

" "linebreak" / "lbr"   (缺省關閉)
"{僅當編譯時加入 "+linebreak" 特性纔有效}
"若是打開,Vim 會在 "breakat" 裏的字符上,而不是在屏幕上能夠顯示的最後
"一個字符上回繞長行.和 "wrapmargin" 和 "textwidth" 不一樣,此處不會插入
"<EOL>,它隻影響文件的顯示方式,而不是其內容. "showbreak" 的值會出如今
"迴繞行的前面.
"
"若是 "wrap" 選項關閉或 "list" 打開,不使用本選項.
"注意 <EOL> (屏幕上的) 以後的 <Tab> 字符在多數狀況下.不會顯示正確數量
"的空格.
set lbr

""""""""""""""""""""""""""""""
" => Indent
""""""""""""""""""""""""""""""
" "autoindent" / "ai" (缺省關閉) 啓用自動縮進
"開啓新行時 (插入模式下輸入 <CR>,或者使用 "o" 或 "O" 命令),從當前行復
"制縮進距離.若是你在新行除了 <BS> 或 CTRL-D 之外不輸入任何東西,而後輸
"入 <Esc>,CTRL-O 或 <CR>,縮進又被刪除.移動光標到其它行也有一樣的效果,
"除非 "cpoptions" 裏包含 'I' 標誌位.
"若是打開自動縮進,排版 (用 "gq" 命令或者插入模式下到達了 "textwidth")
"使用第一行的縮進距離.
"打開 "smartindent" 或 "cindent" 時,縮進的修改方式有所不一樣.
"置位 "paste" 選項時, "autoindent" 選項被複位.
"{Vi 稍有不一樣: Vim 裏輸入 <Esc> 或 <CR> 刪除縮進後,上下移動把光標放在
"刪除的縮進以後;Vi 則把光標放在已刪除的縮進的某處}.
set autoindent

" "smartindent" / "si"  (缺省關閉)  開啓新行的自動縮進
"{僅當編譯時加入 "+smartindent" 特性纔有效}
"開啓新行時使用智能自動縮進.適用於 C 這樣的程序,但或許也能用於其它語
"言. "cindent" 相似,它多數狀況下更好,但更嚴格,見 "C-indenting".若是
"打開 "cindent", 置位 "si" 沒有效果.
" "indentexpr" 是更高級的替代方案.
"一般,使用 "smartindent" 時也應該打開 "autoindent".
"
"在這些狀況下自動插入縮進:
"   - "{"           結束的行後.
"   - "cinwords"    中的某個關鍵字開始的行後.
"   - "}"           開始的行前 (只有使用 "O" 命令纔會).
"在新行第一個輸入的字符若是是 "}",該行使用匹配的 "{" 相同的縮進.
"在新行第一個輸入的字符若是是 "#",該行的縮進被刪除, "#" 被放到第一列.
"下一行上,恢復原來縮進.若是你不想這麼作,使用下面的映射:
"   ":inoremap # X^H#"
"其中的 ^H 用 CTRL-V CTRL-H 輸入.
"使用 ">>" 命令時,'#' 開始的行不右移.
"注意: 若是置位 "compatible",復位 "smartindent".若是置位 "paste",關
"閉這裏的智能縮進功能.
set si

" "cindent" / "cin" (缺省關閉) 打開自動 C 程序的縮進
"{僅當編譯時加入 "+cindent" 特性纔有效}
" "cinkeys" 說明如何設置插入模式下啓動從新縮進的熱鍵, "cinoptions"
"說明如何設置你喜歡的縮進風格.
"若是 "indentexpr" 非空,它否決 "cindent" 的設置.
"若是沒有打開 "lisp",而 "indentexpr" 和 "equalprg" 都爲空, "=" 操做
"符使用本算法縮進,而不調用外部程序.
"見 "C-indenting".
"
"若是你不喜歡 'cindent' 的工做方式,能夠試試 "smartindent" 選項或者
" "indentexpr".
" 若是置位 "paste",不使用本選項.
" 注意: 若是置位 "compatible",本選項被複位.
if has("cindent")
    set cindent
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Spell checking
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <leader>sn ]
map <leader>sp [
map <leader>sa zg
map <leader>s? z=


""""""""""""""""""""""""""""""
" => VIM
""""""""""""""""""""""""""""""
if has("autocmd") && v:version>600
    au BufRead,BufNew *.vim map <buffer> <leader><space> :w!<cr>:source %<cr>
endif

""""""""""""""""""""""""""""""
" => HTML related
""""""""""""""""""""""""""""""
" HTML entities - used by xml edit plugin
let xml_use_xhtml = 1
"let xml_no_auto_nesting = 1

"To HTML
let html_use_css = 0
let html_number_lines = 0
let use_xhtml = 1

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => MISC
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Windows系統的換行符爲\r\n,而Linux/Unix系統則爲\n.所以,在Windows裏編輯
"過的文本文件到了Linux/Unix裏,每一行都會多出一個^M.
"命令中的 "^M" 是經過鍵入 <ctrl-v><enter> 或 <ctrl-v><ctrl-m> 生成的.
"能夠在用如下命令清除該字符:
"noremap <leader>m :%s/\r//g<CR>

"設置 'omnifunc' 選項。如:
if has("autocmd")
    au Filetype java setlocal omnifunc=javacomplete#Complete
    au Filetype html setlocal omnifunc=htmlcomplete#CompleteTags
    au FileType css setlocal omnifunc=csscomplete#CompleteCSS
    au FileType c setlocal omnifunc=ccomplete#Complete
    au FileType php setlocal omnifunc=phpcomplete#CompletePHP
    au FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
endif

"進行Tlist的設置
"TlistUpdate能夠更新tags
map <F3> :silent! Tlist<CR>
let Tlist_Ctags_Cmd="\"C:\\Program Files (x86)\\Vim\\vim74\\ctags.exe\""
let Tlist_Use_Right_Window=1
let Tlist_Show_One_File=0
let Tlist_File_Fold_Auto_Close=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Process_File_Always=1
let Tlist_Inc_Winwidth=0
let g:showfuncctagsbin = "\"C:\\Program Files (x86)\\Vim\\vim74\\ctags.exe\""

"進行NerdTree的設置
map <F4> :silent! NERDTree<CR>

" 按F8按鈕,在窗口的左側出現taglist的窗口,像vc的左側的workpace
"nnoremap <silent> <F8> :TlistToggle<CR><CR>
nnoremap <F10> :silent! TlistToggle<CR>
" :Tlist              調用TagList
let Tlist_Show_One_File=0                    " 只顯示當前文件的tags
let Tlist_Exit_OnlyWindow=1                  " 若是Taglist窗口是最後一個窗口則退出Vim
let Tlist_Use_Right_Window=1                 " 在右側窗口中顯示
let Tlist_File_Fold_Auto_Close=1             " 自動摺疊


"Paste toggle - when pasting something in, don't indent.
"set pastetoggle=<F3>

"移除空行的縮進
map <F2> :%s/s*$//g<cr>:noh<cr>''

"Super paste
ino <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>

"To hex modle 轉化爲16進制方式顯示
let s:hexModle = "N"
function! ToHexModle()
if s:hexModle == "Y"
    %!xxd -r
    let s:hexModle = "N"
else
    %!xxd
    let s:hexModle = "Y"
endif
endfunction

map <leader>h :call ToHexModle()<CR>

"Fast reloading of the _vimrc 快速重load配置文件
map <silent> <leader>ss :source c:\Program Files (x86)\Vim\_vimrc<CR>
"Fast editing of the _vimrc 快速打開編譯配置文件
map <silent> <leader>ee :e c:\Program Files (x86)\Vim\_vimrc<CR>
"When _vimrc is edited, reload it
autocmd! bufwritepost _vimrc source c:\Program Files (x86)\Vim\_vimrc

"matchit 匹配%操做
:source C:\Program Files (x86)\Vim\vim74\macros\matchit.vim
"可視化的buffer操做
let g:bufExplorerDefaultHelp=1
let g:bufExplorerDetailedHelp=1
map <leader>be :BufExplorer <CR>
map <leader>bs :BufExplorerHorizontalSplit <CR>
map <leader>bv :BufExplorerVerticalSplit <CR>

"html.vim設置
:let g:html_indent_script1 = "inc"
:let g:html_indent_style1 = "inc"
:let g:html_indent_inctags="html,body,head,tbody,p"

"mapping 全能補全
"若是下拉菜單彈出,回車映射爲接受當前所選項目,不然,仍映射爲回車
"inoremap <expr> <CR>    pumvisible()? "<C-Y>":"<CR>"
"若是下拉菜單彈出,CTRL-J映射爲在下拉菜單中向下翻頁,不然映射爲CTRL-X CTRL-O
"inoremap <expr> <C-J>   pumvisible()? "<PageDown><C-N><C-P>":"<C-X><C-O>"
"若是下拉菜單彈出,CTRL-K映射爲在下拉菜單中向上翻頁,不然不變
"inoremap <expr> <C-K>   pumvisible()? "<PageUp><C-P><C-N>":"<C-K>"
set completeopt=longest,menu,preview

"SuperTab插件設置
let g:SuperTabDefaultCompletionType="<C-X><C-O>"

"vundle設置 這是一個用於自動下載、安裝、管理、清除vim插件的工具
set nocompatible                " be iMproved
filetype off                    " required!

set rtp+=~/vimfiles/bundle/vundle
let path='~/vimfiles/bundle'
call vundle#rc(path)

"let Vundle manage Vundle
"required! <br>
Bundle 'gmarik/vundle'

"original repos on github<br>Bundle 'mattn/zencoding-vim'

"vim-scritps repos
Bundle 'L9'
Bundle 'FuzzyFinder'
Bundle 'Mark'
Bundle 'bufexplorer.zip'
Bundle 'The-NERD-tree'
Bundle 'taglist.vim'
Bundle 'matrix.vim'
Bundle 'The-NERD-Commenter'
Bundle 'matchit.zip'
"Bundle 'AutoComplPop'
Bundle 'jsbeautify'
Bundle 'YankRing.vim'
Bundle 'autoclose'
"Bundle 'supertab'
Bundle 'csharp.vim'
Bundle 'sharp-Plugin-Added'
Bundle 'sharp-Indent'
Bundle 'python.vim'
Bundle 'Pydiction'

filetype plugin indent on       "required!

"save session file
set sessionoptions-=curdir
set sessionoptions+=sesdir
noremap <F7> :mks! WorkingSession.vim<CR>:wviminfo Working.viminfo<CR>
noremap <F6> :source WorkingSession.vim<CR>:rviminfo Working.viminfo<CR>

"對搜索的設置
"map ft :call Search_Word()<CR>:cw<CR>
"function Search_Word()
    "let w = expand("<cword>") " 在當前光標位置抓詞
    "execute "vimgrep " w " **"
"endfunction
"

"for Pydiction
let g:pydiction_location = '~/vimfiles/bundle/Pydiction/complete-dict'javascript

相關文章
相關標籤/搜索