現在、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それは一時的な良い単語リストに追加されます。
私がこれをストレステストしていないことに注意してください。