Session 如何在Vim的状态行中添加当前会话文件名?

Session 如何在Vim的状态行中添加当前会话文件名?,session,vim,Session,Vim,我最近在我的Vim配置中添加了这个插件,到目前为止我很喜欢它 我知道当会话正在使用时,Vim会将v:this_session设置为会话文件名,我想将其添加到我的状态行中。不幸的是,v:此会话包含完整的文件路径,并且通常太长,无法放入状态行 因此,我的问题是:如何从v:this\u session提取文件名而不使用其完整路径,并将其添加到我的状态行?,因为在所有会话上,正斜杠字符都用作Vim中的路径分隔符 在操作系统中,要从完整路径获取文件名,只需 提取路径的最后一个组件。要做到这一点,可以使用

我最近在我的Vim配置中添加了这个插件,到目前为止我很喜欢它

我知道当会话正在使用时,Vim会将
v:this_session
设置为会话文件名,我想将其添加到我的状态行中。不幸的是,
v:此会话包含完整的文件路径,并且通常太长,无法放入状态行


因此,我的问题是:如何从
v:this\u session
提取文件名而不使用其完整路径,并将其添加到我的状态行?

,因为在所有会话上,正斜杠字符都用作Vim中的路径分隔符 在操作系统中,要从完整路径获取文件名,只需 提取路径的最后一个组件。要做到这一点,可以使用
matchstr()
substitute()
函数:

substitute(t, '^.*/', '', '')


为此,Vim为文件的最后一个组件提供了
:help filename修饰符
:t
。您可以将它们与
fnamemodify()
函数一起使用(如果您想修改内置Vim文件标识符,如
%
),也可以使用
expand()


谢谢您知道如何编写状态行以将其包含在其中吗?@ereOn:在像往常一样配置
状态行
选项时,只需使用
%{}
-字段。例如,
:set statusline+=%{matchstr(t,[^/]*$)}
:let&statusline+='%{matchstr(t,[^/]*$”}
。有关Vim状态行配置的更多信息,请在StackOverflow(或通常在Internet上)上搜索。这是一个很好的话题。这是一个有用的例行公事!出于某种原因,我没有意识到它(即使它是在5.2版中引入的!)。谢谢谢谢请注意,这可能会对人们有所帮助:在测试此功能时,我一加载会话,状态行就没有显示任何内容,并且无法找出原因。结果表明,会话实际上存储了statusline值,因此在更新statusline之前保存的任何会话都没有正确地将其重新加载。解决方案只是删除会话文件中的任何
statusline
条目。
matchstr(t, '[^/]*$')
:echo fnamemodify(v:this_session, ':t')