【问题标题】:How to show the current filename in each split window's status line in Vim?如何在 Vim 的每个拆分窗口的状态行中显示当前文件名?
【发布时间】:2015-11-08 06:35:00
【问题描述】:

我设置了一个全局状态行,但如果每个拆分窗口在其自己的状态行中都有当前文件名,那将会很有用。

【问题讨论】:

  • 每个窗口都有自己的状态行,显示与当前显示在该窗口中的缓冲区有关的信息。换句话说,您想要的是默认行为。请告诉我们您的set statusline 并告诉我们laststatus 的价值。
  • 这是 Mac OS X 10.9 (Mavericks) 附带的库存 vim (7.3.)。我使用添加到statusline 的Syntastic 插件:set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* 我没有明确设置laststatus,但我看到它的值是2。我确实看到了一条状态行,但没有看到单个 vim 窗口。
  • This 是我用$ /usr/bin/vim -u NONE .bashrc -c "vs .ctags" -c "sp .tmux.conf" 得到的。注意三个文件名。如果您没有类似的内容,请将所有详细信息添加到您的问题中。
  • 虽然上述方法对我有用,但我使用的是 NERDTree 插件,所以我通常会启动 vim(在 cmd 行上没有文件名),然后使用侧边栏导航到并打开文件新的拆分窗口,但这些新窗口 dont have local status lines。再想一想,也许这是 NERDTree 插件的限制......
  • 等等!您的状态行是空的,难怪您没有显示文件名。你应该阅读:help 'statusline'

标签: windows vim split statusline


【解决方案1】:

好的,默认设置是空的,所以我为股票控制台 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 框架,它强制处理许多相互依赖的小文件,所以这几乎是必不可少的。
  • 你会如何刷新这个 - 从 tmux 内部运行然后在 tmux 窗格之间移动时这个状态会消失?
  • @serup 我正在使用带有拆分窗格的屏幕(基本上是一个运行 vim 的主窗口,下面是一个较小的窗格,它只是一个 bash 命令行)。我查看了使用 tmux 复制此设置,但您不能像使用 screen 那样使用单个文件,所以我选择使用 screen。
猜你喜欢
  • 2011-05-05
  • 2021-11-04
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2014-07-24
  • 1970-01-01
相关资源
最近更新 更多