让vim tab title为当前目录名

让vim tab title为当前目录名,vim,tabs,project,Vim,Tabs,Project,鉴于vim选项卡的使用方式与TextMate、Sublime等中的选项卡不同,我计划按照建议开始使用它们,其中每个选项卡可能代表不同的项目或文件夹 例如,我目前正在开发一个Rails应用程序,该应用程序分为不同的项目,相互交互,我偶尔也会浏览其他人的gem源代码,看看它是如何工作的,等等。然后我可以尝试以某种方式工作,使每个打开的选项卡对应于不同的项目,利用每个选项卡都可以关联到不同的工作目录这一事实 因此,如果有任何关于如何以这种方式正确使用vim的建议,以及这些建议是否合理,我将不胜感激特别

鉴于vim选项卡的使用方式与TextMate、Sublime等中的选项卡不同,我计划按照建议开始使用它们,其中每个选项卡可能代表不同的项目或文件夹

例如,我目前正在开发一个Rails应用程序,该应用程序分为不同的项目,相互交互,我偶尔也会浏览其他人的gem源代码,看看它是如何工作的,等等。然后我可以尝试以某种方式工作,使每个打开的选项卡对应于不同的项目,利用每个选项卡都可以关联到不同的工作目录这一事实


因此,如果有任何关于如何以这种方式正确使用vim的建议,以及这些建议是否合理,我将不胜感激特别是,我正在寻找一种自定义vim的方法,以便选项卡标题显示该选项卡当前目录的名称,而不是该选项卡中当前活动缓冲区的名称。

这适用于gvim,但您应该能够轻松地使其在终端vim中工作:

在您的.vimrc中:

function! GuiTabLabel()
     return substitute( expand( '%:p' ), '.\+\/\(.\+\)\/.\+', '\1', '' )
 endfunction
 set guitablabel=%{GuiTabLabel()}

这并不漂亮,路径分隔符是硬编码的,我发现结果选项卡标签很难使用,但我想这至少是一个起点。

看起来您可以为
构建一个函数:设置tabline
以用于CLI Vim,请参见
:h seeting tabline
;对于GUI Vim,请参见
:h设置guitablabel
。那么它在GUI和cli中的工作方式是否有区别?一旦我找到它们,我可以在.vimrc中设置它们吗?或者我必须写出一些条件语句,以便在每种情况下只设置正确的语句?嗯,我的评论中有一个输入错误,对不起。是的,你需要一个条件;类似于
if has('gui_running')。。。如果。。。endif
。我个人不喜欢vim如何实现选项卡。我觉得他们真的应该有自己的环境(即它自己的一组变量、寄存器、加载的缓冲区、历史记录和当前目录)。如果使用
:lcd
,则可以使一个选项卡与另一个选项卡位于不同的目录中。我希望我能回答你的问题,但我不认为有一个干净的方式来做你正在寻找的事情。