【问题标题】:Vim statusline loses colors after reopening session重新打开会话后 Vim 状态行失去颜色
【发布时间】:2012-09-29 15:50:41
【问题描述】:

我在 vim 中调整了我的状态栏,并开始喜欢它。我使用 autosession.vim,所以当我重新打开时,我打开了相同的文件,但状态行会丢失所有颜色设置。如果我擦除缓冲区并重新打开,颜色又回来了(或者,如果我来源 ~/.vimrc)。 我做错了什么还是只是缓冲区的性质,在重新打开会话后状态行会丢失颜色设置?图片如下:

值得一提的是我在 ArchLinux 上使用 gvim。

【问题讨论】:

  • 如果您在.vimrc 中设置状态行,可能值得显示代码
  • 就在图片中,如果看不懂,请在新标签中查看图片。
  • 你能找出恢复颜色的设置吗?可能只是statusline 但是,为什么要猜测:) 也许您可以向我们展示设置的样子,以防它也调用脚本函数

标签: vim statusline


【解决方案1】:

您可以通过以下方式调试覆盖状态行设置的内容

:verbose set statusline?

这将告诉您该值是上次设置的

  statusline=.....
    Last set from C:\Program Files\Vim\_vimrc

【讨论】:

  • 这似乎是正确的道路,谢谢。自动会话插件再次设置状态行,但未能包含我的自定义颜色设置。有没有办法在状态行字符串中直接包含颜色,而不是在自动会话找不到它们的地方定义它们?
  • 我通过将颜色设置注入到自动会话脚本中解决了我的问题,以便在会话恢复时执行它们。您的回答将我引向了它,因此我将其标记为解决方案。
【解决方案2】:

当会话恢复时,您的自定义突出显示可能会因为 :syntax on 命令而丢失。除了像这样定义您的自定义突出显示:

:hi User1 guibg=Blue

添加恢复它们的自动命令:

:autocmd ColorScheme * hi User1 guibg=Blue

【讨论】:

  • @d1001001 你测试过这个吗?如果这个有效,我建议你接受这个答案。对我来说看起来很理智
【解决方案3】:

为了解决这个问题,在您的 .vimrc 中为每个用户颜色添加以下内容:

autocmd SessionLoadPost * hi User1 guifg=#112005 guibg=#009099

SessionLoadPost 在加载会话文件并重新激活您的自定义颜色后触发。

【讨论】:

  • 嗨,阿德里安,不幸的是,这不起作用。 :autocmd ColorScheme 工作
【解决方案4】:

- 最简单的稳定解决方案-

创建一个 shell 函数来打开一个 vim 会话并在会话完成加载后获取您的 .vimrc,这样您就可以恢复所有的设置:

打开你的shell配置文件(.bashrc.zshrc等)并编写这个函数:

vims() {
  vim -S "$1" -c 'source ~/.vimrc'
}

保存并获取 shell 配置文件(或重新启动 shell)后,您将始终能够使用命令打开 vim 会话...

vims mysession.vim

...完成了! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2023-03-25
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多