根据iTerm配置文件更改vim背景和配色方案

根据iTerm配置文件更改vim背景和配色方案,vim,iterm,Vim,Iterm,我有两个iTerm配置文件设置,一个深色的使用粉彩主题,一个浅色的使用日光主题。有没有办法让Vim根据iTerm当前使用的配置文件更改背景和配色方案选项?您可以将登录命令添加到任一配置文件(在iTerm2中有一个“开始时发送文本”选项,我不知道常规项)到alias Vim以使用您想要的配色方案: alias vim='vim-c“colorscheme pastel” 如果要根据终端设置选项或映射 name,您可以在.vimrc中做得最好。例如: 如果术语==“xterm” 否则,如果术语=~“

我有两个iTerm配置文件设置,一个深色的使用粉彩主题,一个浅色的使用日光主题。有没有办法让Vim根据iTerm当前使用的配置文件更改背景和配色方案选项?

您可以将登录命令添加到任一配置文件(在iTerm2中有一个“开始时发送文本”选项,我不知道常规项)到alias Vim以使用您想要的配色方案:

alias vim='vim-c“colorscheme pastel”

如果要根据终端设置选项或映射 name,您可以在.vimrc中做得最好。例如:

如果术语==“xterm”

否则,如果术语=~“vt10”

恩迪夫


这是一个古老的话题,但利用布兰登的评论,我找到了一个解决方案:

首先,我创建了两个iTerm配置文件,简单地称为
light
dark
。 在my
.bashrc
中,我添加了此函数,该函数取自并稍作修改:

theme开关(){echo-e“\033]50;SetProfile=$1\a;export ITERM\u PROFILE=$1;}

现在我可以使用
主题切换灯
主题切换暗

最后,在我的
.vimrc
中,我使用
ITERM_PROFILE
环境变量来确定vim的背景:

let iterm_profile = $ITERM_PROFILE
if iterm_profile == "dark"
    set background=dark
else
    set background=light
endif
更新2017-12-04:Tmux和Mac OS菜单栏

如果您使用Tmux,事情就有点棘手了。我无法让
echo-e“\033]50;SetProfile=PROFILENAME\a”
在Tmux会话中工作,因此我在iTerm中创建了一个快捷方式来快速切换浅色或深色配置文件(首选项->按键->添加一个新配置文件并选择“更改配置文件”)。设置ITERM_配置文件(我们需要在VIM中设置暗背景或亮背景)仍然需要
主题开关
功能,但我们还需要更改其Tmux值。此外,我们应该为Tmux状态栏加载一个黑暗或光明的主题

我更扩展的
主题切换
功能用于更改Mac OS菜单栏的外观,为Tmux设置ITERM_配置文件,并加载我正在使用的浅色或深色版本(只要将浅色和深色版本放在单独的文件中,您就可以使用自定义状态栏配置):


啊,等等,我想在你们的情况下,你们两个都使用iterm,所以终端信息是相同的。太好了。我使用
export ITERM_PROFILE=dark
设置了一个环境变量,然后在我的
.vimrc
中检查它并进行适当设置。echo命令中的-e选项是什么?它不在我的手册页中。嗯,-e在我的linux机器上,可以解释反斜杠转义。它在我的mac电脑上没有记录,但仍然有效。StevieD,关于echo-e:当您在bash中键入“echo”时,它使用bash内置的命令echo,而不是/bin/echo。“man echo”命令显示/bin/echo的手册页。如果键入“manbash”并搜索echo,您将找到bash echo内置命令(-neE)的选项以及可以使用的反斜杠/转义序列。
 ... vt100, vt102 maps and settings ...    
let iterm_profile = $ITERM_PROFILE
if iterm_profile == "dark"
    set background=dark
else
    set background=light
endif
function theme-switch {
 echo -e "\033]50;SetProfile=$1\a"
 export ITERM_PROFILE=$1
 if [ $1 = "dark" ]; then
    dark-mode on 2> /dev/null # Prevent error message if dark-mode is not installed
    if tmux info &> /dev/null; then
        tmux set-environment ITERM_PROFILE dark
        tmux source-file ~/.tmux/plugins/tmux-colors-solarized/tmuxcolors-dark.conf
    fi
 else
    dark-mode off 2> /dev/null
    if tmux info &> /dev/null; then
        tmux set-environment ITERM_PROFILE light
        tmux source-file ~/.tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf
    fi
 fi
}