我想循环浏览一个语言列表以进行拼写检查,例如
: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 中使用菜单)。
最佳答案
试试这个:
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
关于vim:如何使用相同的键循环浏览选项列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006508/