Есть ли случаи, когда vi - единственный вариант?

22

Существуют ли сценарии, в которых viможно создать, отредактировать или изменить файл в среде Ubuntu?

Мой вопрос заключается в том, чтобы действительно знать, есть ли такой случай, когда меня заставят использовать, viпотому что это будет единственный вариант, доступный в конкретном случае в экосистеме Ubuntu.

Может ли частный случай существует там , где я как - то не буду иметь доступ к другим вариантам , как nano, picoили просто посылая информацию с помощью инструментов , как cat, sed, teeи многой другой?

Я бы предположил, что это скорее серверная или облачная сторона, поскольку на рабочем столе гораздо больше вариантов, но от любого, кто использует терминал, я часто спрашиваю:

Есть ли такой случай?

Луис Альварадо
источник
8
@Tim На самом деле visudoможно использовать любой редактор. Поскольку конфигурация по умолчанию в Ubuntu учитывает переменные среды EDITORи VISUAL, вы можете запустить sudo env VISUAL=emacs visudoemacs или даже gksudo env VISUAL=gedit visudoграфический редактор, такой как Gedit. ( sudo -Hили sudo -iможет использоваться вместо gksudo.) Я предлагаю этот envспособ, так как VISUAL=emacs sudo visudoон не будет работать ( sudoсбрасывает большую часть среды) и sudo -EH может считаться нецелесообразным.
Элия ​​Каган
3
vi - единственный вариант ... когда vi - единственный известный вам редактор, и вы не хотите тратить время на установку другого. vi - лучший вариант, когда vi - это редактор, который вы знаете / любите больше всего среди доступных, и вы не хотите тратить время на установку того, который вам нравится больше. НИКОГДА не бывает случая, когда только один инструмент может решить проблему; могут быть времена, когда выбор ограничен. А некоторым на самом деле нравится vi. (Не я. Я фанат Emacs. Хотя я могу терпеть многих редакторов.)
keshlam
3
cat? sed? В самом деле? viна самом деле это не так сложно, и если вы действительно не можете научиться этому, вам нужно запомнить только два режима (обычный режим и режим вставки). Вы перемещаете курсор стрелками (или HJKL, если недоступен), нажимаете «i», чтобы начать редактирование (режим вставки). Как только вы закончите, нажмите «Esc», чтобы вернуться в обычный режим. Введите «: wq» для сохранения и выхода (Write + Quit).
sleblanc
2
просто смиритесь с этим и изучите vi :) Это не так сложно, как кажется на первый взгляд, и как только вы это узнаете, вы никогда не будете тратить время на поиск других редакторов в любой новой системе, которую вы используете.
JamesRyan

Ответы:

32

Внутри экосистемы Ubuntu я не думаю, что этот случай может даже существовать , так как vi, по крайней мере, он будет крошечным, который уже является «реальным vim», далеко не «реальным vi».

В контексте встроенных систем с ограниченными ресурсами , которые обычно не являются Ubuntu, у вас может viбыть просто ссылка, на которую оказывается ссылка busybox. И не осталось места. Тогда viэто единственный вариант.

Кроме того, я думаю, что ситуации, когда viединственный вариант не очень распространен сегодня даже за пределами мира Linux .

Но может быть легко ситуации , когда viявляется единственным вариантом вы можете планировать , единственный вариант , который certaily будет существовать в будущем ситуации - что будет происходить внутри над охлажденной серверной комнатой клиента, скорее всего.

Представьте, что вам звонит клиент:

Клиент: Мне нужно исправить эту конфигурацию! В настоящее время!! Я не знаю как, но я могу сказать вам, где находится файл конфигурации. Можете ли вы мне помочь!?!

Вы: Хорошо, на какой системе это работает?

Клиент: О, это на сервере foo, ааа ... он работает ... не могу вспомнить, что-то с "ix" в конце или mayeb с "ux" ...

Нет проблем, теперь вы знаете, что будет vi!

Volker Siegel
источник
1
Я лично работал над несколькими встроенными системами, которые содержали только vi в качестве текстового редактора, я считаю, что buildroot и yocto оба имеют его как единственный редактор при использовании минимальных параметров конфигурации. По общему признанию это не проблема в Ubuntu, но если вы являетесь встроенным разработчиком, это может быть реальной проблемой. Однако вы всегда можете, как сказал ОП, использовать инструменты на основе труб, такие как sed, sort, grep и тому подобное, однако это может быть очень болезненным.
Vality
Дело busybox действительно хорошее. Что раздражает, так это то, что я не думаю, что это даже полноценный ви (по крайней мере, это было десять лет назад, и я надеюсь, что они не раздуты, даже если это раздражает).
Hyde
1
busybox viэто 4k строк:; curl -s https://gitorious.org/busybox/busybox/raw/1c7a58dfb82ea04c525e0c19f94f2d800dee99e3:editors/vi.c | wc)
Volker Siegel
17

Vi никогда не единственный вариант; Вы всегда можете использовать edвместо этого.

evilsoup
источник
8
В Arch Linux, например, edэто не часть base.
Муру
@muru FWIW vimтоже нет.
Sparhawk
4
@ Sparhawk viесть.
Муру
@ Муру Да, конечно. Я запутался.
Sparhawk
edэто только часть standard^установки. Если вы делаете minimalустановку, edне входит.
Оли
13

Ну, есть один случай, когда вам нужен viредактор, давайте предположим:

  • нет графического интерфейса
  • вы в какой-то странной неизвестной *nixсистеме
  • ваш терминал выглядит так:

введите описание изображения здесь

  • вам хватит таких парней

введите описание изображения здесь

Как видите, здесь нет цифровой клавиатуры . Со старой vi(и я имею в виду оригинальный традиционныйvi , не vim, vim.tinyили vim.basic) , вы можете редактировать файл с этой клавиатурой. Без клавиш со стрелками ? Да, когда вы находитесь в командном режиме вы переместили через файл с h, j, kи l, как профессионал. hбыл слева, jбыл вниз, kбыл вверх и lбыл прав.

хаос
источник
5
Я думаю, что этот ответ на самом деле не так уж и плох (клавиатура, похожая на пишущую машинку, не является чем-то маловероятным), но на самом деле это не означает, что вам нужно viконкретно Все старые текстовые редакторы имеют «резервные» комбинации клавиш, которые позволяют работать без клавиш со стрелками и т. Д., Хотя, я полагаю, viэто единственный редактор, в котором вы не пропустите клавиши со стрелками.
оставил
Несколько не по теме: я не понимаю, зачем вам нужна цифровая клавиатура для любого текстового редактора, а клавиши со стрелками в Vim в любом случае бесполезны. : P
дверная ручка
1
Эй, не сбрасывай со счетов старое доброе ed! Нет необходимости в этих "визуальных" уловках в такой системе! Просто попробуйте использовать vim на бумажном терминале и посмотрите, как вы справляетесь ... Более серьезно, знание edполезно в любом случае, это хороший вариант, когда редактирование требует написания сценария.
Hyde
как вы переключаетесь в командный режим с этой клавиатурой (я не вижу выхода; была ли другая комбинация клавиш для этого?)
Foon
@Foon Есть клавиша Escape =) Там, где обычно должна быть вкладка. Слева от Q- клавиши.
хаос
6

Дело в том, что во многих дистрибутивах редакторы, как nanoи picoпросто не являются стандартными, а другие пакеты, а именно vim-tiny. Смотрите здесь список пакетов ubuntu-minimal, vim-tinyединственный редактор . Согласно этому ответу, похоже, что это касается и сервера Ubuntu. Я знаю, что это касается и базового Debian, и Fedora.

При этом, учитывая, что если у вас есть nanoв вашей системе, я еще не видел случая, когда вы должны были бы использовать viвместо этого, но, разыгрывая ответ @ Volker, если вы работаете на клиента и не имеете корневой доступ? apt-get install nanoне принесет вам много пользы (если у него даже есть доступ к внешнему интернету!).

Митч
источник
4

Есть ряд случаев, когда vi(и под этим я, естественно, имею в виду, vim.tinyпотому что это то, что мы отправляем) может быть единственным интерактивным редактором. Если мы игнорируем бабочек и космические лучи, это может показаться наиболее вероятным случаем, когда это может произойти:

  • Вы используете только ubuntu-minimalбазовый метапакет. Это зависит от vim-tiny других редакторов, но не от них. В настоящее время я не могу найти способ установить Ubuntu без этой standard^задачи, но вы можете удалить его после установки с помощью:

    sudo apt-get remove $(apt-cache show standard^ | awk '/Package: / {print $2}')
    

    У меня есть личный опыт, когда мне передавали образ системы без standard^установленной задачи. Если бы у меня не было доступа к сети, viэто был бы мой единственный вариант.

  • Внедрение в среду, которая отображается только viчерез

  • Обнуление всех остальных редакторов вручную (и отключение средств для их переустановки)

  • Вручную взломать оболочку, чтобы остановить известные редакторы, кроме viзапуска.

Истинно-минимальная установка будет наиболее вероятной причиной, но в наши дни это происходит довольно редко. Некоторые VPS и компании облачного хостинга используют их (чтобы сэкономить место на диске так же, как и все остальное), но я бы сказал, что они определенно не являются нормой.

Оли
источник
Отличный ответ как всегда. Я нахожу это очень хорошо осведомленным.
Луис Альварадо
2

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

Craig
источник
Или в тех случаях, когда вы хотите использовать улучшенный редактор, который лучше, чем emacs. ( кий флеймвар ): P
дверная ручка
3
Конечно, если вы используете Ubuntu, то у вас уже есть операционная система, поэтому emacs будет избыточным: v
evilsoup
Эй, хороший комбак. :-p
Крейг
2

У многих (большинства?) Установок Busy-Box есть только vi.

Это не специфично для Ubuntu, но верно для многих встроенных устройств.

Поддельное имя
источник
2

Всегда есть кошка, голова, хвост ... поэтому я не уверен, что есть система, в которой у вас нет альтернативы, но можно найти системы, в которых нет лучшей альтернативы, даже если вы предпочитаете emacs.

Моим примером была система, которую я однажды администрировал, или она была настолько медленной (или линия была медленной и с потерями), что при навигации с помощью клавиш курсора она часто внезапно переключалась на вставку и добавление мусора в отредактированный файл и использование HJKL для перемещения был единственный надежный вариант.

Edheldil
источник
1
И, конечно же, старые добрые бабочки !
оставил около
2

Вот случай, когда vim является единственным вариантом в экосистеме Ubuntu: Ubuntu Snappyне поставляется с любым текстовым редактором, кроме vim-tiny. Возможно, в будущем он будет, но не по состоянию на 2015-16 гг. Если вы собираетесь использовать Ubuntu Snappy через последовательную консоль или ssh, вам лучше быть готовым к использованию vim.

Сергей Колодяжный
источник
0

Однажды я попал в ситуацию, когда работал только линейный режим vi. Что-то, что связано с тем, что вы действительно испортили определения терминалов. В основном только vi в линейном режиме (это ведет себя как обычный vi, если вы притворяетесь, что у вас есть 1-строчный терминал), ex и ed собирались работать, потому что единственное определение терминала было «немым».

Джошуа
источник