如何调用函数而不离开插入模式?

时间:2016-10-30 18:50:19

标签: vim

我正在尝试为ctrlp创建一个插件,我需要一些帮助。首先,我想将输入字段放在屏幕顶部,这样

  1. 是否有类似input()的功能,但可以将输入字段放在顶部?
  2. 友好的说,我已经开始实现自己的输入字段,编辑文本时出现问题。我发现backspace选项对于防止删除提示文本非常有用(&#34;文件&gt;&#34;)。我只是把这个文本放到缓冲区然后开始插入模式。遗憾的是我不能使用这个选项,因为我有复杂的逻辑来控制缓冲区,我总是需要退出插入模式来调用函数。而不是backspace我需要将<BS>重新映射到类似<C-o>:call backspace()<CR>

    的内容
    function backspace()
        " checks if deletion is possible
        x
    endfunction
    

    这有效,但有一个闪烁的光标让我感到不安。插入模式使缓冲区被修改,tabline中有一个标记*。它可以隐藏call setbufvar(bufnr('%'), '&mod', 0),但它的工作速度很慢,符号会不时出现。我为此使用TextChangedI事件。

    1. 是否有禁用监视缓冲区更改的选项?
    2. 最重要的问题是如何在插入模式下获得更多自由?有没有办法在不离开这种模式的情况下调用函数?

1 个答案:

答案 0 :(得分:1)

  1. 是否有类似于input()的函数但可以将输入字段放在顶部?

    没有。命令行在底部,你无能为力。

  2. 是否有禁用监视缓冲区更改的选项?

    是。请参阅:help 'modified'的最后一段。