尽管我认为这是一个好主意,但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块将添加到临时好话名单。
请注意,我没有对此进行压力测试。