自動提示任意英文單詞 用Vim快速編寫文件

2021-08-30 18:30:08 字數 1863 閱讀 2406

vim的自動完成提供了多種方法:

1. 整行 |i_ctrl-x_ctrl-l|

2. 當前檔案內的關鍵字 |i_ctrl-x_ctrl-n|

3. 'dictionary' 的關鍵字 |i_ctrl-x_ctrl-k|

4. 'thesaurus' 的關鍵字,同義詞風格 |i_ctrl-x_ctrl-t|

5. 當前和標頭檔案內的關鍵字 |i_ctrl-x_ctrl-i|

6. 標籤 |i_ctrl-x_ctrl-]|

7. 檔名 |i_ctrl-x_ctrl-f|

8. 定義或巨集 |i_ctrl-x_ctrl-d|

9. vim 命令 |i_ctrl-x_ctrl-v|

10. 使用者定義的補全 |i_ctrl-x_ctrl-u|

11. 全能 (omni) 補全 |i_ctrl-x_ctrl-o|

12. 拼寫建議 |i_ctrl-x_s|

13. 'complete' 的關鍵字 |i_ctrl-n|

這裡只需要用到vim的字典補全就能實現自動提示任意單詞,首先準備乙個比較全面的英文詞典:

排序是為了vim快取這個詞典時更節省時間.將排序後的檔案儲存到$vimruntime/dict/english.dic,當然檔名任意取,建議這樣命名.

接下來,你有兩種方法實現自動補全英文單詞,分為手動和自動的,自動需要借助neocomplcache 這個外掛程式.

如果只需要對txt型別檔案提示單詞,建立乙個ftplugin/txt.vim檔案即可,內容包含:

setlocal dictionary=$vimruntime/dict/english.dic "set dict file

setlocal complete+=k "set complete option

實際上你可以對所有檔案都設定這個詞典補全,將這一行加入到.vimrc即可,注意多了個+號

setlocal dictionary+=$vimruntime/dict/english.dic "set dict file

這也許會在編輯**的時候造成混亂,提示不需要的單詞.

安裝好neocomplcache後做如下設定:

let g:neocomplcache_enable_at_startup = 1

let g:neocomplcache_enable_smart_case = 1

let g:neocomplcache_enable_camel_case_completion = 1

let g:neocomplcache_enable_underbar_completion = 1

let g:neocomplcache_min_syntax_length = 3

let g:neocomplcache_lock_buffer_name_pattern = '/*ku/*'

let g:neocomplcache_dictionary_filetype_lists =

其中最重要的是設定字典檔案:

let g:neocomplcache_dictionary_filetype_lists =

對txt型別檔案應用字典,neocomplcache會在開啟txt檔案後快取該字典並自動彈出完成選單.

用neocomplcache有兩個問題仍需解決:

首次開啟txt檔案的時候不能自動快取詞典,也就不能自動提示,需要手動設定檔案型別,提交:set ft=txt這個命令後才會快取.

每個vim程序只需要快取一次,大概耗時5秒鐘,視不同機器而定.

當然第二次開啟txt型別的檔案時能自動快取,很奇怪的問題.

快取後的檔案順序有問題,而非公升序. 目前正在和作者聯絡以解決.

最後看看效果圖:

輸入archit

按tab鍵選擇需要的單詞:

java英文單詞

platform pl tf m n.平台 standard edition標準版 enterprise ent praiz n.企業 bytecode n.位元組碼,位元組 verifier n.檢驗機 modifier m difai n.修飾語 attribute tribju t vt.to...

word排版之長英文單詞自動換行

問題 在word中輸入比較長的英文單詞,如果單詞超過了行尾,則會自動換行,這樣就形成了上一行剩下的字數很少,如果是兩段對齊,則字元間距會變大 如果左對齊,則會出現右邊空出一大行。解決方法 1 選擇格式 段落 中文版式,選中 允許西文在單詞中間換行 但是這種方法不能自己新增分隔符。如圖。2 使用wor...

python 統計 英文 單詞

import sys,os,re def count words text num char text re.sub w text number text re.sub 0 9 text shrink whitespace text re.sub s text return text.count d...