【问题标题】:Calling omnicompletion for every keypress in vim为vim中的每个按键调用omnicompletion
【发布时间】:2011-02-05 05:11:40
【问题描述】:

我有一个 vim 脚本,它使用单行窗口从用户那里获取文件名模式。如果您按 CTRL-X CTRL-O,则此模式可以从数据库中完成完整的文件名。现在唯一的问题是您必须自己按下自动完成快捷方式。但我希望自动补全能够逐步工作,这样对于您键入的每个字符,它都会自动更新(想想 Eclipse 中的 CTRL-R 文件打开对话框)。

有没有办法使用自动命令或某种回调来为用户在此特定窗口中键入的每个字符调用 CTRL-X CTRL-O 后面的函数?

【问题讨论】:

    标签: vim omnicomplete


    【解决方案1】:

    奥斯汀走在正确的轨道上,但只是发生了错误的事件。看看autocmd 的CursorMovedI 事件。基本上,它会在插入模式下键盘光标移动的任何时候触发。输入一个字符?光标移动,触发事件。

    请记住,这对您的使用来说有点笨拙,因为除了键入或删除字符之外,光标可能会因其他原因而移动。用户可以使用箭头键移回他们想要编辑的位置。你的每一步都会弹出完成。

    我在帮助中找不到有关窗口本地自动命令的任何内容,但存在缓冲区本地,因此可能足够接近。

    【讨论】:

      【解决方案2】:

      尝试 - 并在必要时修改 - 这个插件:http://www.vim.org/scripts/script.php?script_id=1879

      我是一个快乐的用户。

      【讨论】:

      • 如果我没记错的话,它只是映射了一些键,以便它们调用插件函数。你知道任何在 any 输入上运行某些东西的插件吗?
      【解决方案3】:

      您应该查看:h autocmd。我相信InsertChange 事件可以用来做你想做的事。

      【讨论】:

      • InsertChange 实际上是在插入模式下并且用户按下插入键以在插入和替换之间切换时触发。
      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 2011-03-13
      相关资源
      最近更新 更多