3

我想循环浏览用于拼写检查的语言列表,例如

: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 中使用菜单)。

4

1 回答 1

5

试试这个:

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
于 2012-08-17T13:29:10.747 回答