Eu gostei da resposta do garyjohn usando o RunningX, já que é inteligente sobre variáveis do DISPLAY ruins mas não vazias.
Mas .. eu gostaria de ir um melhor. Costumo usar sessões de tela. Eu poderia começar uma sessão de tela em casa, DISPLAY é definido. Então, eu ssh de em outro lugar, DISPLAY ainda é definido e ele realmente exibe ... em casa! Então, então eu vou exportar $ DISPLAY = '. Isso é bom, mas desde que a resposta já foi verificada e encontrou uma variável DISPLAY válida no momento .bashrc inicialmente correu EDITOR ainda seria definido para gvim.
Eu vim aqui procurando por uma solução para um problema similar, eu queria usar yelp para navegação de páginas X-GUI, mas automaticamente cair para o comando man tradicional quando não estava usando X. Baseado no que li aqui, eu criei com isso:
man () {
if RunningX
then
yelp "man:$@";
else
/usr/bin/man "$@";
fi
}
Estou pensando que, para o problema do EDITOR, alguém poderia fazer o seguinte:
EDITOR=vim
vim () {
if RunningX
then
gvim "$@";
else
vim "$@";
fi
}
Eu teria postado apenas a longa história, mas não testei. Eu me considero um novato bash. Eu testei meu 'comando man', isso funciona! Eu estou usando o emacs para o meu editor, ele faz o seu próprio cheque para o X. Eu nem tenho o gvim instalado.