Я зазвичай встановлюю VISUAL
і EDITOR
змінні середовища, і середовище, те саме, але в чому різниця? Чому я б встановив їх по-іншому? Чому розробляю програми, чому я повинен переглядати це VISUAL
раніше EDITOR
чи навпаки?
Я зазвичай встановлюю VISUAL
і EDITOR
змінні середовища, і середовище, те саме, але в чому різниця? Чому я б встановив їх по-іншому? Чому розробляю програми, чому я повинен переглядати це VISUAL
раніше EDITOR
чи навпаки?
Відповіді:
EDITOR
Редактор повинен бути в змозі працювати без використання «просунутої» термінал функціональності (наприклад , старого ed
або ex
режим vi
). Він використовувався на телетайпних терміналах.
VISUAL
Редактор може бути повним екранним редактором , як vi
або emacs
.
Наприклад, якщо ви викликаєте редактор через bash (використовуючи C-x C-e
), bash спробує перший VISUAL
редактор, а потім, якщо VISUAL
не вдасться (оскільки термінал не підтримує повноекранний редактор), він спробує EDITOR
.
Сьогодні ви можете залишити його не EDITOR
встановленим або встановити vi -e
.
ed
подібні не дуже популярні, тому я вважаю, що це нормально просто ігнорувати VISUAL
та використовувати EDITOR
.
C-x C-e
баш. Дуже зручно.
EDITOR
недостатньо, наприклад, для git
Ubuntu 12.04. Не VISUAL
встановлюючи git
ігнорує EDITOR
та просто використовує nano
(я вважаю, компільований за замовчуванням).
ed
. Коли з'явилися редактори з графічними інтерфейсами - під графічним графічним інтерфейсом я маю на увазі графічний інтерфейс CLI (vim, emacs та ін. У цьому контексті редактори графічних інтерфейсів CLI та середовище настільних ПК більш-менш однакові, тому ви можете встановити VISUAL на будь-який; однак EDITOR призначений для принципово іншого робочого процесу. Звичайно, це все історичне. У цей час ніхто не використовує ед.
Прийнята відповідь, ймовірно, є хорошим, коротким зверненням, але це буде спроба заглибитись далі, коли різниця між ВІЗУАЛЬНИМ та РЕДАКТОРОМ може все-таки мати значення (спираючись на відповідь Адама Каца ).
Специфікація POSIX все ще розрізняє редактори візуального режиму та редактори рядків. Це мало значення ще в ті часи, коли позиціонування курсору над послідовними з'єднаннями було важким (особливо через швидкість послідовного з'єднання). Стаття у Вікіпедії для vi дає корисну інформацію щодо розрізнення vi (редактор візуального режиму) та ex (редактор рядків). Якщо ви копаєтесь досить глибоко вниз по дослідженню, ви знайдете розділ "RATIONALE" в специфікації "ex" , який дає підставу для розрізнення, що все ще знаходиться в специфікації:
Визнано, що частини vi буде важко, якщо не неможливо, задовільно реалізувати на терміналі блочного режиму або терміналі без будь-якої форми адресації курсору, таким чином, це не обов'язкова вимога, щоб такі функції працювали на всіх терміналах . Однак, наміром vi повинен забезпечити повний набір можливостей на всіх терміналах, здатних їх підтримувати.
Мені це не потрібно було, оскільки я відмовився від мого модему на 300 бод, але я можу уявити, що люди, які використовують повільні послідовні лінії для підключення до вбудованих систем (та / або над дійсно вразливими з'єднаннями), все ще можуть оцінити можливість мати бажаний режим лінії редактор відрізняється від "візуального" редактора, як vi. Термінальні коди у стилі VT100 через збиткове, мляве та вузьке з'єднання можуть бути "розмитими" в обмежених програмах.
Для решти нас, здається, "правильним" відповідь, здається, "встановити їх обох як ваш бажаний редактор". Можливо, було б вибирати це відмінність для локального / графічного редактора (наприклад, Sublime або gvim) проти редактора вікон терміналу (наприклад, vi або emacs), але, ймовірно, є ціла гора застарілих причин, чому це, ймовірно, не працюватиме так, як сподівалося .
Деякі інструменти приймають лише EDITOR, наприклад оболонку вбудовану fc :
-e ENAME select which editor to use. Default is FCEDIT, then EDITOR, then vi
Я зробив висновок, що $VISUAL
це графічний і $EDITOR
є командним рядком. Якщо не визначено, все, що шукає, $VISUAL
слід спробувати $EDITOR
далі.
( Цитування потрібне: я хотів би отримати належну документацію, можливо, довідкову сторінку або специфікацію 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
$VISUAL
залежить від того, чи є у вас термінал, здатний позиціонувати курсор, а не чи є у вас віконна система.
$DISPLAY
, але це добре знати.
Оскільки, здається, не існує жодного середовища, де vi або подібне не вдасться, я взяв на себе налаштування VISUAL на те, що потребує X DISPLAY, а EDITOR на колишнє.
Здебільшого, це, здається, викликає у мене проблеми, коли якась програма не використовує VISUAL.
$VISUAL
як фрагмент оболонки, до якого вони додають (цитується оболонку) ім'я файлу, але деякі трактують його як ім'я виконавчого файлу, в якому вони можуть або не можуть шукати$PATH
. Тому найкраще встановитиVISUAL
(іEDITOR
) повний шлях до виконуваного файлу (який може бути сценарієм обгортки, якщо ви хочете, наприклад, параметри).