2014-09-20 101 views
0

我正在制作一个插件,其中的想法是,如果缓冲区为空,那么您将进入插入模式,否则您将保持正常模式。Vim检测当前缓冲区是什么类型的缓冲区

当然这很好,但你遇到了一些问题,如果你只是打开Vim,你在默认的空缓冲区,你不想在缓冲区做任何事情?你必须先进入正常模式,然后执行你的魔法。这是不可取的,因为它需要更多的工作。

所以我的问题是,如何检测当前缓冲区是否是真实文件,无论它是否存在于文件系统中。

例如,我想检测缓冲区是否是JS文件,无论是新的还是预先存在的。或者,如果缓冲区是NERDTree缓冲区或插件缓冲区,那么这种东西。

谢谢。任何帮助表示赞赏。 :)

P.S:对于那些有兴趣,这是插件:https://github.com/Greduan/vim-empty-insert

回答

1
if expand('%:p') != '' 
    " do stuff 
endif 

:h %:p:h expand()

顺便说一句,对不起,如果这听起来很粗鲁,但我猜许多Vim的长期用户将自动按一个/当他们进入一个缓冲层i,不假思索它是否存在的驱动器或不。所以你可能要考虑保持功能更一致。

+0

谢谢!这涵盖了文件系统问题。谢谢! :)是的,你是正确的,人们可能已经习惯了在新文件中输入插入模式。但有人可能想要这个,我想我可能也是。你永远不知道,也许有一天它就是你想要的。 :) P.S .:我编辑你的'==#'并将它变成一个'!=',它的工作方式符合我的要求。 :) – greduan 2014-09-21 00:23:31