當我使用Vim時,我使用了相當多的:sh。有時我忘了我是否在產卵一個新的殼牌或我在其他殼牌。Vim在產生外殼時改變控制檯的顏色(Mac OS X El Caption)
我想知道我是否可以改變顏色的控制檯當我使用:sh在Vim?所以我知道這個shell是從Vim中衍生出來的。
當我使用Vim時,我使用了相當多的:sh。有時我忘了我是否在產卵一個新的殼牌或我在其他殼牌。Vim在產生外殼時改變控制檯的顏色(Mac OS X El Caption)
我想知道我是否可以改變顏色的控制檯當我使用:sh在Vim?所以我知道這個shell是從Vim中衍生出來的。
我通過使變量bash
和使用實現這個上bash提示符,在我的~/.bashrc
檢查我是否來自vim
。
在我~/.vimrc
,我有:
" Silence shell commands, no need to press ENTER to continue
command! -nargs=+ Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'
" Silently spawn a shell
command! Bash execute 'Silent INVIM=1 bash'
我
~/.bashrc
然後,我檢查是否$INVIM
被定義爲1,然後我用PS1
添加(Vim)
我的提示。
if [ "$INVIM" == 1 ]; then
PS1+='(Vim)'
fi
編輯:
正如@戴夫在評論中提到,Vim的產卵殼的時候就已經轉儲所有環境變量。所以我們在~/.vimrc
本身中定義環境變量INVIM
。
let $INVIM=1
那麼我們不Bash
命令定義需要INVIM=1
。所以可以簡化爲:
command! Bash execute 'Silent bash'
而且,現在$INVIM
在vimrc
定義,它適用於一切,甚至可能釀出外殼任何插件。
:
在vimrc
顯然定義一個新的變量,也沒有必要。 Vim在生成的shell中添加了$VIMRUNTIME
和$VIM
環境變量。這可以在shell的rc文件中用來判斷它是否是從vim內部調用的。
每次在另一個shell中啓動一個shell時,$SHLVL
變量會遞增。
我用下面的代碼片段顯示該變量的值時,它的上面1
:
export PS1='...$(((SHLVL>1))&&echo $SHLVL" ")...'
我提示的其餘部分是不相關的,但它看起來像這樣:
這很好知道。謝謝。 – ronakg
什麼排序的設置在你的環境中?我在ubuntu下使用vim,當使用:sh時,vim在我的環境中留下一個'VIM_RUNTIME'的副本。我的bash prompt_command使用它在我的提示中添加一個[vimsh]標籤,所以我不會忘記。 – Dave