如何在Vim的每个分割窗口的状态栏中显示当前文件名?

6

我已经设置了全局状态栏,但如果每个分屏窗口都有自己的状态栏显示当前文件名会更加有用。


2
每个窗口都有自己的状态行,显示与当前在该窗口中显示的缓冲区相关的信息。换句话说,您想要的是默认行为。请向我们展示您的“set statusline”并告诉我们“laststatus”的值是多少。 - romainl
这是预装于 Mac OS X 10.9(Mavericks)的 Vim(7.3)。我使用 Syntastic 插件来添加到 statuslineset statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* 我没有显式设置 laststatus,但我看到它的值为 2。 我可以看到状态行,但不能为每个 Vim 窗口单独设置状态行。 - Eno
这是我使用 $ /usr/bin/vim -u NONE .bashrc -c "vs .ctags" -c "sp .tmux.conf" 得到的结果。注意三个文件名。如果你没有类似的东西,请尽可能添加所有细节到你的问题中。 - romainl
虽然上述方法对我来说有效,但我正在使用NERDTree插件,所以我经常只是启动vim(在cmd行中没有文件名),然后使用侧边栏导航到并在新的分割窗口中打开文件,但这些新窗口没有本地状态行。仔细想想,也许这是NERDTree插件的限制... - Eno
等一下!你的状态栏是空的,难怪没有文件名显示。你应该阅读:help 'statusline' - romainl
这意味着我的电脑上默认的 statusline是空的。 - Eno
1个回答

10

好的,默认设置为空,因此我为普通控制台的vim添加了以下设置,这似乎对NERDTree和Syntastic插件很友好:

" [buffer number] followed by filename:
set statusline=[%n]\ %t
" for Syntastic messages:
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
" show line#:column# on the right hand side
set statusline+=%=%l:%c

非常好 -> 对此的点赞比我想象中少。我目前正在学习Elixir的Phoenix Web框架,它强制将工作分配到许多相互依赖的小文件中,因此这几乎是必不可少的。 - Thomas Browne
如果您正在tmux中运行此程序,如何刷新它,以便在移动tmux窗格时该状态不会消失? - serup
@serup 我正在使用分屏的 screen(基本上是一个主窗口,其中运行 vim,下面有一个较小的窗格,只是一个 bash 命令行)。我尝试使用 tmux 复制此设置,但是你不能像使用 screen 那样使用单个文件,因此我仍在使用 screen。 - Eno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接