В my есть часть ~/.bashrc
, которая устанавливает $ EDITOR в gvim. Он отлично работает, когда я в окне X. Тем не менее, если я ssh на свою рабочую станцию (с другой рабочей станции), gvim начинает жаловаться "не могу открыть дисплей".
Поэтому я хочу поместить if
в bashrc утверждение, что если X window доступно, используйте gvim, в противном случае пусть это будет vim.
Как я мог этого достичь?
if [[ $DISPLAY ]]
для поклонников двойных скобок …$DISPLAY
Переменная окружения должны быть установлены на то , если вы находитесь в X, и снят с охраной , если вы не подключены к дисплею.Так что вы можете использовать это:
Но есть и другое решение. Это называется ssh X forwarding.
Пробег
тогда вы можете запустить vim на машине, с которой вы работаете в ssh'd, и она отобразится на машине, на которой вы запускаете X.
источник
Поместите это в ваш .bashrc:
источник
Хотя это не ответ на ваш вопрос, я подумал, что может быть полезно указать, что если вы работаете с одной рабочей станцией, на которой запущен X *, на другую рабочую станцию, вы можете использовать gvim, если вы настраиваете переадресацию X с помощью ssh. Информация об окне будет просто отправлена по сети, и gvim просто появится, как если бы он работал локально.
Добавьте следующее в ~ / .ssh / config
Теперь вы сможете просто запустить gvim.
Если вы используете рабочую станцию Windows и не используете X, вы на самом деле МОЖЕТЕ запустить X-сервер локально, используя Cygwin. После настройки вы можете настроить популярные ssh-клиенты, такие как PuTTy, на переадресацию X11, а затем появится окно gvim, которое выглядит как окно с собственным декором.
источник
Просто проверьте одну из переменных среды, которые Xorg устанавливает при запуске, например, XLOCAL, которая содержит информацию о текущем сеансе X11.
источник
Мне понравился ответ garyjohn с использованием RunningX, так как он хорошо разбирается в плохих, но непустых переменных DISPLAY.
Но .. Я хотел бы пойти один лучше. Я часто использую сеансы экрана. Я мог бы начать сеанс экрана дома, определен DISPLAY. Затем, я ssh в другом месте, DISPLAY все еще определен, и он на самом деле отображает ... дома! Так что .. тогда я 'экспортирую $ DISPLAY ='. Это хорошо, но так как этот ответ уже проверен и найден допустимая переменная DISPLAY в то время, когда .bashrc первоначально запустил EDITOR, он все равно будет установлен в gvim.
Я пришел сюда в поисках решения аналогичной проблемы, я хотел использовать yelp для просмотра man-страниц X-GUI, но автоматически переходил к традиционной команде man, когда не использовал X. Исходя из того, что я здесь прочитал, я придумал следующее:
Я думаю, что для проблемы редактора можно сделать что-то вроде следующего:
Я бы только что опубликовал это без длинной истории, но я не проверял это. Я считаю себя новичком Баш. Я проверил мою «команду человека», это работает! Я использую emacs для своего редактора, хотя он выполняет собственную проверку X. У меня даже не установлен gvim.
источник