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

暂时禁用vim插件而不重新启动

我在Vim中使用 c-support.其中一个功能自动 comment expansion.

当我从外部编辑器将代码粘贴到Vim中时,注释会被扩展(这会给我双重评论并弄乱粘贴 – 例如见下文).我希望能够禁用插件,粘贴,然后重新启用它,而无需重新启动Vim.我不确定这是否可行.

SO问题here,herehere都描述了禁用插件方法,但它们都要求我关闭Vim,弄乱我的.vimrc或者类似的东西,并重新启动;如果我必须关闭Vim,我不妨cat file1>> MYFILE; vim myfile,然后在内部移动线,这将同样快.

是否有可能在运行vim时禁用插件而不重新启动,最好是以允许我映射热键toggle-plugin的方式(所以重新获取〜/ .vimrc是好的;这可以映射到热键[我想,还没试过呢))?

搞砸了评论

/*
 *  *  Authors:
 *   *    A Name 
 *    *
 *     *  copyright:
 *      *    A Name,2012
 *       */

编辑:事实证明你可以:设置粘贴,:设置nopaste(引用:帮助粘贴,将“避免意外的影响[粘贴]”.(见评论).
但是,我仍然很好奇你是否可以根据原始问题禁用/启用插件,所以我将保持问题开放.

解决方法

没有修改插件源就没有通用的方法.一些插件(像我的所有插件)可以添加功能(我的框架中有“卸载”功能,但主要用于更新而不重新启动vim,而不是暂时禁用某些功能).你可以肯定做的是为每个源插件文件添加一个函数调用,它将保存当前的vim状态,并且还会在插件加载后执行此操作(由于存在完成,抛出,尝试|<代码有一些错误&gt ;你不能只在插件的末尾添加这个功能),可能是在VimEnter,FileType和Syntax事件上.然后你需要有一个函数来恢复对插件所做的更改以及每个插件中的s:Execute函数定义,如下所示:

function s:Execute_I_do_not_expect_function_with_this_suffix_to_be_defined_by_the_plugin_so_I_add_it_to_avoid_name_collisions(s)
    execute a:s
endfunction

.这是在源脚本的上下文中执行一行代码所必需的.通过需要保存的“状态”我的意思是

>映射
>命令
>迹象
>功能
>菜单
>事件(自动命令)
>语法(在插件运行之前可能为空)
>选项
>一些vim,全局,缓冲区,制表符和窗口变量
> //脚本局部变量.虽然这里很简单:在脚本脚本的开头 – 本地范围是空的,您只需要在禁用时清空它.

对于每个项目,可以还原插件所做的更改,但编码并不容易.并且< script>的存在映射的参数与nore的存在无法区分,尽管它们具有不同的行为.

如果你想写它,不要忘记如果资源是脚本,你的代码将重新启动.

另外,请注意SourcePre事件.它将有助于自动将线条添加到所有插件中.

不要忘记有更多地方可以修改,无法轻松保存和恢复:文件系统,解释器状态,打开的插件缓冲区等.

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

相关推荐