vim:如何使用相同的键循环浏览选项列表?

标签 vim

我想循环浏览一个语言列表以进行拼写检查,例如

: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/

相关文章:

c++ - 如何为 Ctags 无法处理的 MSVC 文件夹的所有 C++ 头文件生成标签文件?

vim - 在不使用箭头键的情况下选择 vim 模糊查找器中的文件?

vim - 为什么 vundle 需要关闭文件类型

创建宏时 VIM 映射无法正常工作

vim - vi - "pop"保留字和函数的解释

linux - Vim 中的退格行为

vim - 如何在 vim 中折叠错误检查?

keyboard - 如何设置 vim 以根据 CAPS LOCK 是否打开自动更改我的背景颜色?

vim - 如何在 vimscript 中插入文本

python - vim 无法加载库 python26.dll 但我使用的是 python 2.7?