두 개의 별도 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, screen 및 일반 쉘 세션에서 작동합니다.

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

환경 변수를 사용하십시오. 이 방법으로 셸에서 또는 를 설정할 수 THEME=dark있으며 해당 셸에서 시작된 모든 프로그램은 원하는 구성표를 사용합니다.THEME=light

Bash 또는 기타 쉘에서:

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

나는 다음과 같은 도구를 개발 중입니다.개인 정보, 이는 다음 그룹을 관리하는 데 도움이 될 수 있습니다.주택 프로필. 각 구성 파일은 현재 셸 세션 중 언제든지 로드할 수 있는 스크립트 세트를 정의합니다.

문제를 해결하려면 .profile2가지 버전의 2개 프로필을 정의할 수 있습니다 .vimrc. 그런 다음 다음을 호출하여 전환할 수 있습니다 shprofile.

$ shprofile profileName

자세한 내용은 관련 내용을 확인하세요Github 프로젝트.

관련 정보