Мне понравился ответ garyjohn с использованием RunningX, так как он хорошо разбирается в плохих, но непустых переменных DISPLAY.
Но.. Я хотел бы пойти лучше. Я часто использую сеансы экрана. Я мог бы начать сеанс экрана дома, определен DISPLAY. Затем, я ssh в другом месте, DISPLAY все еще определен, и он на самом деле отображает ... дома! Так что .. тогда я 'экспортирую $ DISPLAY ='. Это хорошо, но так как этот ответ уже проверен и найден допустимая переменная DISPLAY в то время, когда .bashrc первоначально запустил EDITOR, он все равно будет установлен в gvim.
Я пришел сюда в поисках решения аналогичной проблемы, я хотел использовать yelp для просмотра man-страниц X-GUI, но автоматически переходить к традиционной команде man, когда X не используется. Исходя из того, что я прочитал здесь, я придумал это:
man () {
if RunningX
then
yelp "man:$@";
else
/usr/bin/man "$@";
fi
}
Я думаю, что для проблемы редактора можно сделать что-то вроде следующего:
EDITOR=vim
vim () {
if RunningX
then
gvim "$@";
else
vim "$@";
fi
}
Я бы только что опубликовал это без длинной истории, но я не проверял это. Я считаю себя новичком Баш. Я проверил свою «команду человека», это работает! Я использую emacs для своего редактора, хотя он выполняет собственную проверку X. У меня даже не установлен gvim.