Atualmente, o Vim não oferece nenhum mecanismo "nativo" para fazer isso, embora eu ache que é uma boa ideia. A única coisa em que posso pensar é um :autocmd
que chama uma função que procura por uma seção especial no arquivo e, em seguida, move o cursor sobre as palavras nessa seção e aciona zG
com :normal
comandos. Isso seria confuso e eu ficaria relutante em me incomodar com isso.
Edit: É claro que, de alguma forma, eu ignorei a existência de :spellgood!
, mesmo que seja na sua pergunta. Isso torna o trabalho muito mais viável. Eu criei uma implementação básica que você pode ajustar para atender às suas necessidades:
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()
Isso irá procurar por um bloco parecido com isto:
-*-SpellGoodWordsStart-*-
word1 word2 word3
word4 word5 ...
-*-SpellGoodWordsEnd-*-
E cada palavra que encontrar - nesse caso, word1
, word2
, word3
, word4
e word5
- dentro do bloco, ela será adicionada à lista de palavras favoritas temporárias. / p>
Apenas esteja ciente de que eu não testei isso com ênfase.