Linux: Как автоматически определить отображение и настроить редактор по умолчанию соответственно

1

Я относительно новичок в Linux. Я подключаюсь к удаленной машине Linux иногда через telnet, а иногда через NX-клиент для Windows. Когда я подключаюсь через Telent, я бы хотел, чтобы редактор по умолчанию был vim, а когда я подключался через NX, я бы хотел, чтобы редактор по умолчанию был gvim. Есть ли способ автоматически определить, какое соединение я использую при получении файла псевдонима? Прямо сейчас у меня есть следующее в моем файле псевдонима:

alias usevim 'setenv CSCOPE_EDITOR vim; setenv EDITOR vim'
alias usegvim 'setenv CSCOPE_EDITOR gvim; setenv EDITOR gvim'
echo 'using vim'
usevim

Это устанавливает редактор по умолчанию vim. Когда я подключаюсь через NX, первое, что я сделаю, это наберу 'usegvim'. Я бы не хотел делать это каждый раз! Есть ли способ определить, присутствует ли дисплей или нет?

Спасибо!

ОБНОВЛЕНИЕ: если ($? DISPLAY) не работает, потому что мой файл .cshrci содержит строку с "setenv DISPLAY ..."

ОБНОВЛЕНИЕ: теперь я использую Cygwin для SSH в удаленном окне и использую Cygwin XWin Server для отображения моих графических приложений. Теперь мне не нужно беспокоиться о том, какой редактор использовать, потому что gvim всегда доступен. Я, вероятно, откажусь от NX-клиента, потому что все, что мне нужно, теперь может быть запущено непосредственно из командной строки, а приложения с графическим интерфейсом работают так же, как и родные приложения Windows.

derekswanson08
источник
2
С какой стати вы бы использовали telnet в этот день и век? Единственный разумный выбор SSH , На самом деле, включение сервера telnet в эти дни (вполне справедливо) требует значительных усилий.
как дополнение к предыдущему комментарию: telnet отправляет все незашифрованное в виде обычного текста, по умолчанию ssh использует очень безопасное шифрование. каждый на пути с одной машины на другую мог прочитать все, что вы делаете!
twall
Хорошая точка зрения. Я сейчас использую SSH.
derekswanson08

Ответы:

2

DISPLAY переменная устанавливается, когда используется дисплей X11 (графический). При использовании telnet, DISPLAY не будет определен

Похоже, вы используете CSH производная, которую я на самом деле не знаю, но я думаю, что вы могли бы добавить что-то вроде этого в ваш файл .tcshrc:

if ($DISPLAY) then
    setenv CSCOPE_EDITOR gvim
    setenv EDITOR gvim
else
    setenv CSCOPE_EDITOR vim
    setenv EDITOR vim
endif
Kurt Stutsman
источник
Пересмотрел мой ответ, чтобы исправить перевернутую логику. Новый код будет использовать gvim, когда установлен DISPLAY.
1

Просто всегда используйте «gvim» или «vim -g». Он будет жаловаться, если дисплей X недоступен, но все равно запустит консольную версию.

Heptite
источник