使用/维护两个单独的 bash_profile 和 vimrc 的明智方法是什么

使用/维护两个单独的 bash_profile 和 vimrc 的明智方法是什么

我喜欢在终端和 vim 中使用两种不同的设置。其中一个在 vim 中使用浅色背景和有点奇特的航空公司状态栏。另一个使用深色背景和更准系统的 vim 外观。我要么因为犹豫不决而在两者之间摇摆不定,要么只是偶尔想尝试一下。

有什么聪明的方法可以在这两种配置之间轻松切换?现在我基本上得到了两个略有不同的.bash_profiles 和.vimrcs 。当我想要变暗时,我手动获取黑暗配置文件,并定义了一个 bash 别名来使用备用 vimrc 启动 vim。我确信有更好的方法,并且我会对建议感兴趣。

更新:我采纳了设置主题环境变量以在配置文件中引用的极好建议。奇迹般有效。还发现了这个宝石(不是 Ruby 意义上的)它让我可以同时将 iTerm 配置文件切换为深色配置文件。警告:将 bash 函数定义为单行函数会给我带来语法错误,因此我必须将其分成多行。

it2prof() {
  echo -e "\033]50;SetProfile=$1\a"
}

alias dark="export THEME=dark && it2prof black && . ~/.bash_profile"
alias light="unset THEME && it2prof white && . ~/.bash_profile"

更好的是,事实证明 iTerm2 有很多转义码可即时更改设置。

另一个更新:iTerm2 文档警告转义序列可能无法在 tmux 和 screen 中工作,事实上它们也不能工作。为了让它们工作,您需要告诉多路复用器将转义序列发送到底层终端,而不是尝试解释它。它有点毛茸茸的,但现在这对我来说在 tmux、屏幕和正常的 shell 会话中都有效:

darken() {
  if [ -n "$ITERM_PROFILE" ]; then
    export THEME=dark
    it2prof black
    reload_profile
  fi
}

lighten() {
  if [ -n "$ITERM_PROFILE" ]; then
    unset THEME
    it2prof white
    reload_profile
  fi
}

reload_profile() {
  if [ -f ~/.bash_profile ]; then
    . ~/.bash_profile
  fi
}

it2prof() {
  if [[ "$TERM" =~ "screen" ]]; then
    scrn_prof "$1"
  else
    # send escape sequence to change iTerm2 profile
    echo -e "\033]50;SetProfile=$1\007"
  fi
}

scrn_prof() {
  if [ -n "$TMUX" ]; then
    # tell tmux to send escape sequence to underlying terminal
    echo -e "\033Ptmux;\033\033]50;SetProfile=$1\007\033\\"
  else
    # tell gnu screen to send escape sequence to underlying terminal
    echo -e "\033P\033]50;SetProfile=$1\007\033\\"
  fi
}

答案1

使用环境变量。这样,您可以在 shell 中设置THEME=dark或,并且该 shell 启动的所有程序都将使用所需的方案。THEME=light

在 bash 或任何其他 shell 中:

case $THEME in
  light)
    PS1='\[\e05m\]fancy stuff\[\e0m\]';;
  *)
    PS1='\w\$ ';;
esac

在你的.vimrc

if $THEME == "light"
else
endif

答案2

您可以使用软链接。因此创建两组.bash_profile.vimrc内容

touch .vimrc-light .vimrc-dark .bash_profile-light .bash_profile-dark

然后根据您的心情,更改软链接以指向正确的颜色集

ln -sf .vimrc-light .vimrc 
ln -sf .bash_profile-light .bash_profile

答案3

我正在开发一个工具,个人资料,这可以帮助您管理一组外壳型材。每个配置文件都定义了一组可以在当前 shell 会话中随时加载的脚本。

为了解决您的问题,您可以定义 2 个配置文件,其中包含.profile和的 2 个版本.vimrc。然后您可以通过调用以下命令在它们之间切换shprofile

$ shprofile profileName

欲了解更多信息,请查看相关的Github项目

相关内容