gVim 設定完成

最近幾天都在調整家裏和學校電腦的gVim設定,離上次在Windows上用Vim已經好一陣子了,這段時間都是用MadEdit來做為主要的編輯器,不過MadEdit對我來說還有幾個缺點,第一是同時開太多檔案會出錯,第二是預設背景色是白的,要整個重新設定很麻煩,所以最近又重新把Vim裝起來,調整他的設定檔,現在已經調到差不多了,其實還有一些目標想達成,不過還不算必要,而且還找不太到資料,所以就先暫緩。這次我是使用Cornelius的Enhanced Vim Package for Windows為基礎,多加入我之前的一些設定和這次找到的新設定,最後挑了一組還不錯的顏色,然後簡單修改一下,中間比較辛苦的是在字型設定的部份,還好Tiberius剛好發表了程設字型新歡 Inconsolata這篇文章,剛好切中我的問題所在,真是如有神助XD。

在功能的加強上,我找到讓Omni Auto Completion變得更簡單的方法了,之前也說過要Ctrl+x, Ctrl+n兩次組合鍵實在很麻煩,沒想到我在網路上搜尋的過程中,意外發現到這個設定檔,節錄自動完成的部份過來如下:

" Omni補完関連
" $VIMRUNTIME/autoload/htmlcomplete.vimの645行目をコメントアウントしておくとhtmlの補完が小文字になる

set completeopt=menu,preview,menuone " 補完表示設定

" TabでOmni補完及びポップアップメニューの選択
function InsertTabWrapper(is_shift)
    if pumvisible()
        return a:is_shift ? "\<C-p>" : "\<C-n>"
    endif
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ '\k\|<\|/' " htmlで補完できるように<,/でもOmni補完
        return "\<tab>"
    elseif exists('&omnifunc') && &omnifunc == ''
        return a:is_shift ? "\<C-p>" : "\<C-n>"
    else
        return "\<C-x>\<C-o>"
    endif
endfunction
inoremap <tab> <C-r>=InsertTabWrapper(0)<CR>
" Shift-Tabはうまくいかないようだ
" inoremap <S-tab> <C-r>=InsertTabWrapper(1)<CR>

" CRでOmni確定&改行
function InsertCrWrapper()
    return pumvisible() ? "\<C-y>\<CR>" : "\<CR>"
endfunction
inoremap <CR> <C-r>=InsertCrWrapper()<CR>

這個設定可以使用Tab鍵來進行自動完成,如果只是直接想要輸入tab,那也可以輸入shift+tab,實際用起來真是想像以上的方便。不過Tab鍵在原來的Enhanced Vim中已經先指派給Snippets了,我是把這部份設定mark起來。