尽管我认为这是一个好主意,但Vim目前没有提供“本机”机制来执行此操作。我唯一想到的就是:autocmd调用一个函数,该函数搜索文件中的特殊部分,然后将光标移到该部分中的单词上并zG使用:normal命令触发。这将是一团糟,我不愿为此烦恼。
编辑:当然:spellgood!,即使您有问题,我还是以某种方式忽略了的存在。这使工作更加可行。我提出了一个基本的实现,您可以对其进行调整以满足您的需求:
function! AutoSpellGoodWords()
let l:goodwords_start = search('\C-\*-SpellGoodWordsStart-\*-', 'wcn')
let l:goodwords_end = search('\C-\*-SpellGoodWordsEnd-\*-', 'wcn')
if l:goodwords_start == 0 || l:goodwords_end == 0
return
endif
let l:lines = getline(l:goodwords_start + 1, l:goodwords_end - 1)
let l:words = []
call map(l:lines, "extend(l:words, split(v:val, '\\W\\+'))")
for l:word in l:words
silent execute ':spellgood! ' . l:word
endfor
endfunction
autocmd BufReadPost * call AutoSpellGoodWords()
这将搜索如下所示的块:
-*-SpellGoodWordsStart-*-
word1 word2 word3
word4 word5 ...
-*-SpellGoodWordsEnd-*-
而且每个单词发现-在这种情况下,word1,word2,word3,word4,和word5--within块将添加到临时好话名单。
请注意,我没有对此进行压力测试。