VISUAL vs EDITOR, в чем разница?

Я обычно устанавливаю значения переменных среды VISUAL и EDITOR в одну и ту же вещь, но в чем разница? Почему я должен устанавливать их по-другому? При разработке приложений почему я должен выбрать VISUAL перед EDITOR или наоборот?

141 голос | спросил xenoterracide 15 WedEurope/Moscow2010-12-15T13:17:36+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 13:17:36 +0300 2010, 13:17:36

5 ответов


112

Редактор EDITOR должен работать без использования «расширенных» функций терминала (например, старый ed или ex режим vi). Он использовался на терминалах телетайпа.

Редактор A VISUAL может быть полноэкранным редактором как vi или emacs.

например. если вы вызовете редактор через bash (используя C-x C-e), bash попробует первый VISUAL редактор, а затем, если VISUAL сработает (поскольку терминал делает не поддерживает полноэкранный редактор), он пытается EDITOR.

В настоящее время вы можете оставить EDITOR unset или установить его в vi -e.

ответил andcoz 15 WedEurope/Moscow2010-12-15T14:02:45+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 14:02:45 +0300 2010, 14:02:45
17

Принятый ответ, вероятно, является хорошим, коротким лечением, но это будет попытка углубиться, когда разница между VISUAL и EDITOR может все еще иметь значение (возможно, основываясь на ответе Адама Каца).

Спецификация POSIX по-прежнему различает визуальные редакторы и линейные редакторы. Это действительно имело значение в те дни, когда позиционирование курсора по последовательным соединениям было затруднено (особенно из-за скорости последовательного соединения). статья Википедии для vi дает полезную информацию о различии между vi (редактор визуального режима) и ex (редактор строк). Если вы проделаете достаточно глубокое исследование, вы найдете «ОБОСНОВАНИЕ», раздел «ex» spec , который дает основание для различия, все еще находящегося в спецификации:

  

Признано, что части vi будут сложными, если не   невозможно, удовлетворительно реализовать на терминале блочного режима, или   терминал без какой-либо формы адресации курсора, таким образом, это не   обязательное требование о том, чтобы такие функции работали на всех терминалах.   Вместе с тем предполагается, что реализация vi должна обеспечить   полный набор возможностей на всех терминалах, способных поддерживать   их.

Мне это не нужно, так как я отказался от модема 300 бод, но могу себе представить, что люди, которые используют медленные последовательные линии для подключения к встроенным системам (и /или по действительно рискованным соединениям) могут по-прежнему ценят возможность иметь предпочтительный редактор режима линии, отличный от «визуального» редактора, такого как vi. Коды терминалов в стиле VT100 по сравнению с потерянным, узким узким соединением могут быть «раздутыми» в ограниченных приложениях.

Для остальных из нас кажется, что «правильный» ответ кажется «поставил их как ваш предпочтительный редактор». Возможно, было бы неплохо кооптировать это различие для локального /графического редактора (например, Sublime или gvim) и редактора оконного окна (например, vi или emacs), но, вероятно, есть гора наследственных причин, почему это, вероятно, не будет работать так, как надеется .

ответил robla 1 Jam1000000amSun, 01 Jan 2017 00:12:37 +030017 2017, 00:12:37
1

Некоторые инструменты принимают только EDITOR, например, shell builtin fc :

-e ENAME  select which editor to use.  Default is FCEDIT, then EDITOR, then vi
ответил Steven Penny 30 Maypm16 2016, 21:13:37
1

Я пришел к выводу, что $VISUAL является графическим и $EDITOR является командной строкой. Если undefined, все, что ищет $VISUAL , должно , затем попробуйте $EDITOR next.

( Необходимая цитата: . Мне бы хотелось получить правильную документацию, возможно, справочную страницу или спецификацию POSIX?)

На данный момент у меня есть такие вещи в моем ~/.bashrc и ~/.zshrc:

 EDITOR="$(command -v vim)"

# we have gvim, not in an SSH term, and the X11 display number is under 10
if command -v gvim >/dev/null 2>&1 \
&& [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then
  export VISUAL="$(command -v gvim) -f"
  SUDO_EDITOR="$VISUAL"
else
  SUDO_EDITOR="$EDITOR"
fi

gvim без -f не будет работать с программами, которые ожидают действовать при редактировании. Это определенно включает sudoeditor (sudo -e).

Это может сломаться, если у вас есть пробелы на пути к vim. Если это проблема, либо установите ее правильно, либо рассмотрите символические ссылки, например /usr/local/bin/gvim

ответил Adam Katz 9 PM000000110000003431 2016, 23:28:34
0

Так как, похоже, не существует среды, где сбой vi или аналогичный не удался, я решил установить VISUAL на что-то, что нужно X DISPLAY, а EDITOR - ex.

В основном, это просто вызывает проблемы, когда какая-то программа не использует VISUAL.

ответил Mike William Meyer 3 AM00000050000003331 2015, 05:28:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132