根据iTerm配置文件更改vim背景和colorscheme

时间:2011-12-11 05:10:15

标签: vim iterm

我有两个iTerm配置文件设置,一个使用Pastel主题的黑色配置文件和一个使用solarized light主题的light设置。有没有办法让Vim根据iTerm目前使用的配置文件更改背景和colorscheme选项?

3 个答案:

答案 0 :(得分:3)

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

alias vim='vim -c "colorscheme pastel"'

答案 1 :(得分:2)

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

首先,我创建了两个iTerm配置文件,简称为lightdark。 在我的.bashrc我添加了此功能,取自here并稍加修改:

theme-switch () { echo -e "\033]50;SetProfile=$1\a"; export ITERM_PROFILE=$1; }

现在我可以使用theme-switch lighttheme-switch dark

切换iTerm主题

最后,在我的.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_PROFILE(我们需要在VIM中设置暗背景或浅背景)仍需要theme-switch函数,但我们还需要更改其Tmux值。此外,我们应该为Tmux状态栏加载暗或亮主题。

我更加展开的theme-switch函数添加了dark mode来更改Mac OS菜单栏的外观,为Tmux设置ITERM_PROFILE并加载solarized status bar theme的亮或暗版本我是使用(只要将明暗版本放在单独的文件中,就可以使用自定义状态栏配置):

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
}

答案 2 :(得分:0)

http://vimdoc.sourceforge.net/htmldoc/term.html#term-dependent-settings

  

如果要设置选项或映射,具体取决于终端   名称,您可以在.vimrc中做到最好。例如:

     

if& term ==“xterm”

 ... xterm maps and settings ...    
     

否则如果& term =〜“vt10。”

 ... vt100, vt102 maps and settings ...    
     

ENDIF