我想循环查看拼写检查的语言列表,例如
:setlocal spell spelllang=en_EN
:setlocal spell spelllang=en_US
:setlocal spell spelllang=de
:setlocal spell spelllang=fr
:setlocal nospell
只需一次按键 一个显而易见的方法是将每个这些都放在一个单独的键上,比如F1到F5。但这对我所拥有的几个功能键很难。所以我尝试将它们放在一个功能键上,它将重新映射以在列表中循环。但事实证明,映射的长度会随着O(N ^ 2)而增加。我相信有一种更优雅的方法可以通过vim函数实现这一点,我确信它可以在变量中的某个位置保持状态。可悲的是,我的vim编程功能还不足以解决这个问题。 (不,我不想在gvim中使用菜单。)
答案 0 :(得分:4)
试试这个:
nnoremap <F2> :call CycleLang()<CR>
fun! CycleLang()
let langs = ['', 'en_gb', 'en_us', 'de', 'fr']
let i = index(langs, &spl)
let j = (i+1)%len(langs)
let &spl = langs[j]
if empty(&spl)
set nospell
else
set spell
endif
endfun