Я зазвичай встановлюю 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недостатньо, наприклад, для gitUbuntu 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) повний шлях до виконуваного файлу (який може бути сценарієм обгортки, якщо ви хочете, наприклад, параметри).