【问题标题】:How to revert function definitions in Vim?如何恢复 Vim 中的函数定义?
【发布时间】:2021-12-28 05:26:46
【问题描述】:

我不知道如何恢复我的功能。假设我在.vimrc 中有这个:

function! TempFunc()
  " Temporary stuff
  nnoremap v <c-v>

  ...

endfunction

silent! call TempFunc()

它会调用TempFunc(),对。我猜如果我运行命令,这个函数(以及其中的内容)将被删除:

:delfunction! TempFunc

它删除了TempFunc(),但不包括它返回的内容。所以这里v仍然绑定到&lt;c-v&gt;

我想要的是,如果我删除TempFunc(),里面的代码也会被删除,我的临时文件也会丢失。有什么想法吗?

【问题讨论】:

    标签: function vim neovim


    【解决方案1】:

    当您调用TempFunc() 时,它会执行nnoremap v &lt;c-v&gt;。映射不记得它来自函数,因此删除函数不会恢复映射。

    没有一种通用的方法可以撤销函数所做的事情——对于函数中的每一行,您必须找到自己的撤销方法。

    如果您需要取消映射:

    unmap v
    

    【讨论】:

    • 如果我将我的临时内容分组到 augroup 块中会怎样。它的行为仍然相同吗?
    • 函数创建的环境变化与函数无关。您可以撤消一个组,但您必须手动撤消它,删除该函数不会撤消它产生的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2019-10-06
    • 2018-06-02
    • 2011-10-05
    • 1970-01-01
    • 2021-02-24
    • 2023-02-14
    相关资源
    最近更新 更多