vim可以根據使用者字義的字典來進行自動補全 1)字典:VIM使用的字典即為一系列的單詞,在一個文字檔中每行一個即可,如果寫在同一行中,VIM會根據isKeyWord中的分隔字元自動拆分,如果在補全時需要一些特殊的字元,例如輸入pr,希望補全後能出現printf.(,那麼不僅需要在字典中添加printf.(,還需要在isKeyWord中將符號.和符號(加入,方法為在vimrc檔案中加入set iskeyword+=.,(2)使用:字典編寫好後,在vimrc檔案中加入這樣一行代碼(將路徑換成字典檔案的路徑)set dictionary-=$VIM/dic.txt dictionary+=$VIM/dic.txt然後在輸入模式下,輸入單詞的一部分,再按下<Ctrl-X><Ctrl-K>,即可彈出自動補全選項,若有多個選項,可使用Ctrl-N及Ctrl-P上下選擇3)快速鍵:如果覺得<Ctrl-X><Ctrl-K>按鍵組合太麻煩,那麼也可以直接將字典補全添加到預設補全列表中,在vimrc中添加下面的代碼 set complete-=k complete+=k在輸入模式下,輸入單詞的一部分,再按下<Ctrl-N>即可開始自動補全 若習慣於使用Tab鍵補全,這裡有一個智能Tab補全的代碼,將其添加到vimrc中即可,它會根據上下文自動選擇補全模式:
inoremap <tab> <c-r>=Smart_TabComplete()<CR>
function! Smart_TabComplete() let line = getline('.') " current line let substr = strpart(line, -1, col('.')+1) " from the start of the current " line to one character right " of the cursor let substr = matchstr(substr, "[^ \t]*$") " word till cursor if (strlen(substr)==0) " nothing to match on empty string return "\<tab>" endif let has_period = match(substr, '\.') != -1 " position of period, if any let has_slash = match(substr, '\/') != -1 " position of slash, if any if (!has_period && !has_slash) return "\<C-X>\<C-P>" " existing text matching elseif ( has_slash ) return "\<C-X>\<C-F>" " file matching else return "\<C-X>\<C-O>" " plugin matching endifendfunction