【问题标题】:Vim: TagList Plugin Slow UpdateVim: TagList 插件更新慢
【发布时间】:2011-06-01 21:55:54
【问题描述】:

我在开发中使用带有 TagList 的 Vim。 TagList 看起来很不错,但其中一个问题是刷新需要很长时间,所以如果我的意思是从函数 A 到函数 B 在同一个文件中,TagList 大约需要 5 秒才能得到更新。有没有办法让这个间隔更短,比如半秒?

【问题讨论】:

  • 5 秒太长了。我也在使用它,它对我来说很好用。即使是半秒也太多了。我认为问题出在其他地方,而不是 TagList。我还使用 ctags 和 cscope 进行代码浏览,它们也非常好。你也可以试试。
  • @Rafid K. Abdullah:你读过这个问题了吗:stackoverflow.com/questions/2169645/…
  • @eckes,是的,我刚刚做到了,但这并不是我真正要问的。你以前用过 TagList 吗?!
  • 是的,我使用它也没有问题,但它不会立即更新所选功能。就像我在问题中所说的那样,当我将光标移动到另一个功能时,大约需要 5 秒钟才能看到选择功能更新为左侧选项卡中的当前功能。
  • 对我来说也很慢。直到现在我都认为这很正常。也许它与 ctags 有关系,这是 TagList 用来生成方法树的工具。我在 Mac 上使用 Vim,而不是 Linux,顺便说一句(MacVim)。

标签: vim taglist


【解决方案1】:

我遇到了和你一样的问题,并受到 ThePosey 的回答的启发。

你可以在 taglist.vim 的第 1678 行找到“autocmd”命令

autocmd BufEnter * call s:Tlist_Refresh()

等待 BufEnter 事件刷新标签窗口。

我刚刚修改为

autocmd BufEnter,CursorMovedI * call s:Tlist_Refresh()

当您的光标在插入模式下移动时,它会切换 Tlist_Refresh。 我删除了 CursorMoved 事件,因为它阻碍了太多其他命令。

我认为这应该满足大多数情况的要求。副作用是一些需要移动光标的命令失效。

编辑:

更简单的方法是将这一行放在 .vimrc 文件中:

autocmd CursorMovedI * silent! TlistHighlightTag

顺便说一句,没有命令 TlistRefresh,请改用 TlistHighlightTag。

【讨论】:

  • 我稍微修改了您的解决方案,因为 CursorMovedI 仅适用于插入模式,但我也想要正常模式:autocmd BufEnter,CursorMoved,CursorMovedI * silent! TlistHighlightTag
【解决方案2】:

您可以尝试将更新时间设置为 1000 毫秒。我用一个大文件做了这个,一切都很好,每秒刷新一次;

set ut=1000

看看有没有帮助

【讨论】:

  • 这完成了 TomYu 的解决方案通过轮询所做的工作,但与任何“轮询与中断”驱动的解决方案具有相同的缺点(即中断驱动会更快并且不会导致不必要的操作。(我不得不设置 ut=250 以获得我想要的 UI 响应。如果我真的希望它不引人注目,我会将其设置为 ut=100,因为小于 250 毫秒的事件通常不会被人类注意到)。
【解决方案3】:

你可以给函数绑定一个键:TlistRefresh

map <silent> <F1> :TlistRefresh<CR>

【讨论】:

  • 嗯...这是一个很好的解决方法,所以由于没有其他答案,我会将其标记为已接受的答案。但是等等,在我的情况下,我想有一个 5 秒的计时器调用 TlistRefresh,是吗?因此,检查并更改它可能是一个好主意。如果我成功了,我会通知你。
  • 是的,我在脚本中寻找指示计时器事件或正在发生的事情的内容,但没有什么真正突出我。我唯一能想到的就是每 5 秒生成一个 BufEnter 事件。有调试选项可以启用 :TlistDebug ,然后 :TlistMessages 会显示输出。祝你好运,请发布任何更好的解决方案。
【解决方案4】:

有点老问题,但对于 taglist 4.6(至少)更新周期由更新时间控制(autocmd CursorHold .. line 1735)

对于交互性,Tom Yu 的回答可能是最好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多