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

sim*_*ont 5 vim

我在Vim中使用c-support.其中一个功能是自动评论扩展.

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

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

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


搞砸了评论:


/*
 *  *  Authors:
 *   *    A Name 
 *    *
 *     *  Copyright:
 *      *    A Name, 2012
 *       */
Run Code Online (Sandbox Code Playgroud)

编辑:原来你可以:set paste,:set nopaste(其中,引用:help paste,将"避免意想不到的效果[同时粘贴]"(见注释).
不过,我还是好奇,您是否可以禁用/启用插件按照原问题,所以我将问题保持开放.

小智 5

插入":设置粘贴"然后粘贴您的代码.插入之后:设置取消


ZyX*_*ZyX 1

没有通用的方法可以在不修改插件源的情况下执行此操作。一些插件(比如我的所有插件)可以添加此功能(我的框架中有 \xe2\x80\x9cunload\xe2\x80\x9d 功能,但主要使用它来更新而不重新启动 vim,而不是临时禁用某些东西)。你绝对可以做的是向每个源插件文件添加一个函数调用,该函数调用将保存当前的 vim 状态,并且在加载插件后也会执行此操作(由于 , 的存在,finish你可以\xe2\x80\x99t 只需添加此函数位于插件末尾),可能在和事件上。然后,您需要一个函数来恢复对插件所做的更改以及每个插件中的函数定义,如下所示:throwtry | <code with some error>VimEnterFileTypeSyntaxs:Execute

\n\n
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)\n    execute a:s\nendfunction\n
Run Code Online (Sandbox Code Playgroud)\n\n

。这是在源脚本上下文中执行一行代码所必需的。通过 \xe2\x80\x9cstate\xe2\x80\x9d 需要保存我的意思是

\n\n
    \n
  1. 映射
  2. \n
  3. 命令
  4. \n
  5. 标志
  6. \n
  7. 功能
  8. \n
  9. 菜单
  10. \n
  11. 事件(自动命令)
  12. \n
  13. 语法(在插件运行之前可能为空)
  14. \n
  15. 选项
  16. \n
  17. 一些 vim,所有全局变量、缓冲区变量、选项卡变量和窗口变量
  18. \n
  19. // 脚本局部变量。虽然这里很简单:在脚本开始时,脚本本地范围是空的,您所需要做的就是在禁用时将其清空。
  20. \n
\n\n

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

\n\n

如果您想编写它,请不要忘记这样一个事实:如果脚本获得资源,您的代码将重新启动。

\n\n

另外,请注意该SourcePre事件。它将有助于自动将您的行添加到所有插件中。

\n\n

不要忘记还有更多地方可以修改,并且可以轻松或完全保存和恢复\xe2\x80\x99:文件系统、解释器状态、打开的插件缓冲区等。

\n