我有两个 iTerm 配置文件设置,一个使用 Pastel 主题的深色和一个使用日光主题的浅色。有没有办法让 Vim 根据 iTerm 当前使用的配置文件更改背景和颜色方案选项?
3 回答
您可以将登录命令添加到任一配置文件(在 iTerm2 中有一个“在开始时发送文本”选项,我不知道常规 iTem)以别名 VIM 以使用您想要的配色方案:
alias vim='vim -c "colorscheme pastel"'
这是一个古老的主题,但使用布兰登的评论我找到了一个解决方案:
首先,我创建了两个 iTerm 配置文件,简称为light
和dark
。在我的.bashrc
我添加了这个函数,取自这里并稍作修改:
theme-switch () { echo -e "\033]50;SetProfile=$1\a"; export ITERM_PROFILE=$1; }
theme-switch light
现在我可以使用或切换 iTerm 主题theme-switch dark
最后,在我的环境变量中,.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 中创建了一个快捷方式来快速在浅色或深色配置文件之间切换(首选项 -> 键 -> 添加一个新配置文件并选择“更改配置文件”)。该theme-switch
函数仍然需要设置 ITERM_PROFILE(我们需要在 VIM 中设置深色或浅色背景),但我们还需要更改 Tmux 的值。此外,我们应该为 Tmux 状态栏加载深色或浅色主题。
我的更多扩展theme-switch
功能添加了深色模式以更改 Mac OS 菜单栏的外观,为 Tmux 设置 ITERM_PROFILE 并加载我正在使用的日光状态栏主题的浅色或深色版本(您可以使用自定义状态栏配置只要当您将浅色和深色版本放在单独的文件中时):
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
}
http://vimdoc.sourceforge.net/htmldoc/term.html#term-dependent-settings
如果你想根据终端名称设置选项或映射,你可以在你的 .vimrc 中做到这一点。例子:
如果 &term == "xterm"
... xterm maps and settings ...
否则如果 &term =~ "vt10."
... vt100, vt102 maps and settings ...
万一