Bashrc
什麼是使用/維護兩個單獨的 bash_profile 和 vimrc 的聰明方法
我喜歡在終端和 vim 中使用兩種不同的設置。一個在 vim 中使用淺色背景和有點花哨的航空公司狀態欄。另一個使用深色背景和更準系統的 vim 外觀。我要麼因為優柔寡斷而在兩者之間搖擺不定,要麼只是偶爾有點變化。
隨意在這兩種配置之間輕鬆切換的聰明方法是什麼?現在我基本上有兩個略有不同
.bash_profile
的 s 和.vimrc
s。當我想變暗時,我手動獲取暗配置文件,並定義了一個 bash 別名以使用備用 vimrc 啟動 vim。我相信有更好的方法,我會對建議感興趣。更新:我提出了設置主題環境變數以在配置文件中引用的極好建議。奇蹟般有效。還發現了這個gem(不是 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 }
使用環境變數。這樣,您可以在 shell 中設置
THEME=dark
或設置THEME=light
,並且由該 shell 啟動的所有程序都將使用所需的方案。在 bash 或任何其他 shell 中:
case $THEME in light) PS1='\[\e05m\]fancy stuff\[\e0m\]';; *) PS1='\w\$ ';; esac
在你的
.vimrc
:if $THEME == "light" … else … endif
您可以使用軟連結。所以用內容創建兩組
.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