Самые большие различия между Vim и VI


25

Сегодня я решил попробовать Vi вместо Vim, я хотел посмотреть, насколько он отличается. Я не заметил особых различий, самое большое, что я заметил, было то, как Vi не сказал, -- INSERT --когда я перешел в режим вставки, и были некоторые незначительные различия в интерфейсе.

Это заставило меня задуматься, каковы самые большие различия между Vi и Vim?


1
Вы, очевидно, не используете много расширенных функций vim. выбор блока, поиск слова под курсором, номер приращения под курсором, подсветка синтаксиса и т. д.
Джим

2
Связанный пост - В чем разница между Vi и Vim?
RBT

Ответы:


25

На самом деле в vim есть команда справки, которая расскажет вам о различиях: :help vi_diff

С сайта Vim самые большие из них:

неограниченное количество отмен

Вы можете сделать xxxx и отменить каждое из четырех удалений. Когда вы в последний раз вводили «jjjj», а потом узнали, что клавиша caps lock включена? Вы случайно соединили пять строк вместе, и Vi может отменить только последнюю команду. В Vim вы можете отменить все четыре команды «J» и вернуть исходный текст.

портативность

Vi доступен только в Unix. Vim работает на MS-Windows, Macintosh, Amiga, OS / 2, VMS, QNX и других системах. А также в каждой системе Unix.

подсветка синтаксиса

Vim может быть запрограммирован для выделения частей буфера разными цветами или стилями в зависимости от типа редактируемого файла. Существуют сотни наборов правил подсветки синтаксиса, связанных с Vim.

графический интерфейс пользователя

Vim хорошо работает на консоли, но он может работать во многих графических интерфейсах, включая X Windows, Mac OS и Microsoft Windows. Он использует родные графические виджеты для прокрутки, разделения буферов и меню. Он также может общаться с буфером обмена.


4
Некоторые больше различий упоминаются в FAQ
Christian Brabandt

Согласно readme , некоторые из этих операционных систем больше не поддерживаются.
Рольф

7

В Vim есть много функций, которых нет у Vi, даже функции, которые явно не являются «продвинутыми».

На практике это означает, что если вы привыкли к Vi, вы, вероятно, столкнетесь с очень небольшим количеством различий, если начнете использовать Vim (или какой-либо другой клон Vi), но если вы привыкли к Vim и если ваши «рефлексы» включают такие функции, как подсветка в визуальном режиме, любое действие клавиши, которое начинается с «g» или «z», любое действие текста с «i» или «a» [например, «галка», чтобы удалить слово под курсором], навигация с помощью клавиш со стрелками в режиме вставки и т. д., вы обнаружите, что они не работают в Vi.

Существует также вопрос о том, что именно вы использовали, когда говорите, что «пробовали Vi». Во многих системах «vi» фактически запускает Vim в режиме, в котором применяются некоторые из этих различий (режим показа по умолчанию, как вы заметили, клавиши со стрелками не работают в режиме вставки), а другие - нет (работают визуальный режим и клавиши g / z. ), а некоторые функции зависят от параметра времени компиляции, который иногда отключается в «крошечном Vim», который используется для этого (текстовые объекты, такие как «w» слово, являются одним из них). Вы не получите их, если вы запустите реальный Vi или если «vi» - это какой-то другой клон с меньшим количеством функций или отличных от Vim, таких как nvi или VILE.

И, с другой стороны, хотя «крошечный Vim в режиме Vi», очевидно, не имеет никаких функций, которых нет у полного Vim, есть несколько особенностей подлинного оригинального Vi, которых vim не хватает. Это документировано в :help vi-differences.


2
Я бы поспорил, что у OP на самом деле есть «крошечный vim» vi.
Кевин

2

Большинство сравнений дают больше функциональности vim, чем vi, но есть одно исключение. В vi был "открытый" режим, и у vim такого режима нет.

Режим открытия - это однострочный режим, который использовался в те времена, когда терминалы не имели электронных дисплеев, т. Е. Телетайпов, принтеров и т. П., А также с дисплеями, в которых курсор остается только внизу.

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


У меня установлен ex-vi.sourceforge.net , который является портом оригинального Vi. Как мне запустить этот открытый режим? Справочная страница упоминает об этом, когда говорит о ^R, но не дает никакой другой помощи. :open some/fileвозвращается open: No such command from open/visual.
Муру,

@muru, Qчтобы войти в режим ex, затем open. zчтобы показать контекст текущей строки, когда вы находитесь в открытом режиме. Чтобы отступить, Qтогда vi.
Антоний

0

Я думаю, что очень трудно провести сравнение из-за изменений в vi, произошедших с течением времени.

Когда я учился в колледже, я использовал простой ванильный vi на немом терминале (а также на эмуляторе терминала на Mac), который подключался к мэйнфреймам с помощью System V. Вы даже не можете найти это больше.

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

Поэтому, если вы не использовали определенных поставщиков / оборудование, вы использовали не vi, а что-то вроде vi.

Но я вспоминаю, что vi (или клон, который я использовал) был очень минималистичным по своему интерфейсу (без цветов, без меток INSERT, без множественных отмен и т. Д.), Но в то же время могущественным для достижения цели. Очень практично


0

Часто задаваемые вопросы по Vim имеют хорошо отформатированный список: https://vimhelp.org/vim_faq.txt.html#faq-1.4

Выдержка из FAQ:

  • Многоуровневая отмена
  • Вкладки, несколько окон и буферов
  • Гибкий режим вставки (можно использовать клавиши со стрелками в режиме вставки)
  • макрос
  • Визуальный режим (визуальный выбор фрагментов текста)
  • Блочные операторы
  • Интерактивная справочная система
  • Редактирование и история командной строки
  • Завершение командной строки (завершение табуляции)
  • Горизонтальная прокрутка (длинные строки)
  • Уникод и улучшения интернационализации.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.