在vim中,您可以使用 bufexists
检查当前缓冲区中的文件是否已打开 . 对于短文件名(非完整路径),您可以使用 bufexists(bufname('filename'))
检查它是否打开 .
有没有办法检查文件是否在选项卡中打开?
我最接近的解决方法是做类似的事情:
:tabdo if bufnr(bufname('filename')) in tabpagebuflist(): echo "Yes"
然而,那是pythonic伪代码...我不知道如何让它在vim中工作 . 我的目标是使用外部AppleScript检查文件是否已打开,如果是,则转到该文件中的一行 .
理想情况下,我收集(例如Open vim tab in new (GUI) window?)在VIM中使用不同的GUI窗口非常具有挑战性/不可能 .
2 回答
我的不耐烦和良好的文档使我变得更好......这是解决方案(在Check if current tab is empty in vim和Open vim tab in new (GUI) window?的帮助下) . 来源是https://github.com/keflavich/macvim-skim
然后像这样使用:
或者,从命令行,这是一个脚本,使用
WhichTab
转到文件的特定行:我回复凯夫拉维奇,但我还不能......
我正在研究一个类似的问题,我想在gvim中打开文件时模仿gvim --remote-tab-silent的行为 . 我找到了你的这个WhichTab脚本,但是在任何给定标签中打开了多个窗口时遇到了问题 . 如果在选项卡内部拆分窗口,那么tabpagebuflist()将返回多个缓冲区,因此在List中使用缓冲区编号位置的方法不起作用 . 这是我解决这种可能性的解决方案 .
我想我可以返回tabNos,这将是一个空的列表,被评估为标量0,但我刚刚学习了vimscript,并且对它的动态类型行为的细节还不太满意,所以我就这样离开了现在 .