微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在vim中切换功能

基本上我想做的是

map,e :call ToggleEssayMode()<CR>
function! ToggleEssayMode()
if toggle==true
  :map j gj
  :map k gk
  toggle=false
else
  :umap j
  :umap k
  toggle=true
enndfunction

我环顾了一会儿,但我能找到的人都是保留的vim变量.我可以制作自己的变量吗?有没有更正确的方法呢?

解决方法

除非您使用单独的函数来启用和禁用,否则您将需要一个标志变量,并且为了将其与其他配置隔离,我建议您编写一个插件.例如,在〜/ .vim / plugin /中创建一个文件essay.vim(实际名称无关,只要它以.vim结尾),其中包含以下内容

let s:enabled = 0

function! ToggleEssayMode()
    if s:enabled
        unmap j
        unmap k
        let s:enabled = 0
    else
        nnoremap j gj
        nnoremap k gk
        let s:enabled = 1
    endif
endfunction

然后,调用ToggleEssayMode()的映射可以位于同一文件中,也可以位于.vimrc中.

关于你的代码的一些评论

>使用let来分配变量(参见为选项设置).> Vim不支持真假;请改用1和0.>每一个如果需要结束endif.> umap应取消映射;前者不存在.>应该使用nnoremap以避免递归映射.>:在脚本中的命令之前是不必要的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐