Найбільші відмінності між Vim та VI


25

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

Це змусило мене замислитися, які найбільші відмінності між Vi та Vim?


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

2
Пов’язаний пост - Яка різниця між Vi та Vim?
RBT

Відповіді:


25

Насправді є команда довідки vim, щоб розповісти про відмінності: :help vi_diff

З сайту Vim найбільші:

необмежене скасування

Ви можете зробити xxxx та скасувати кожне з чотирьох видалених. Коли ви востаннє набирали "jjjj", а потім з'ясовували, що ввімкнена клавіша "caps"? Ви випадково приєдналися до п'яти рядків разом, і Vi може скасувати лише останню команду. У Vim ви можете скасувати всі чотири команди "J" і повернути свій початковий текст.

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

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

підсвічування синтаксису

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

GUI

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, в режимі, де застосовуються деякі з цих відмінностей (показовий режим за замовчуванням, як ви спостерігали, клавіші зі стрілками не працюють у режимі вставки), а інші - не (візуальний режим та г / з клавіші працюють ), а деякі функції залежать від параметра компіляції, який іноді відключається у "крихітному Vim", який використовується для цього (текстові об'єкти, такі як слово "aw", є одними з таких). Ви не отримаєте їх, якщо запустите справжній Vi, або якщо "vi" - це якийсь інший клон із меншою чи іншою функцією, ніж Vim, наприклад, nvi або VILE.

І, з незрозумілого боку, хоча "крихітний Vim у режимі Vi", очевидно, не має жодних особливостей, яких не має повний Vim, є кілька особливостей справжнього оригінального Vi, якого не вистачає vim. Вони задокументовані в Росії :help vi-differences.


2
Я б покладав великі сумніви, що ОП насправді має "крихітний вим".
Кевін

2

Більшість порівнянь дають більше функціональності vim, ніж vi, але є один виняток. У vi і був режим "відкритого", і vim насправді не має цього режиму.

Відкритий режим - це однолінійний режим, який використовувався ще в той день з терміналами, у яких не було електронних дисплеїв, тобто телетип, буквені друкарі тощо, а також з дисплеями, де курсор залишається лише внизу.

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


У мене встановлено ex-vi.sourceforge.net , який є портом оригіналу Vi. Як запустити цей відкритий режим? Роздільна сторінка згадує її, коли йдеться про неї ^R, але не надає іншої допомоги. :open some/fileповертає open: No such command from open/visual.
муру

@muru, Qщоб увійти в колишній режим, потім open. zщоб показати контекст поточного рядка, коли ви перебуваєте у відкритому режимі. Щоб відступити, Qзначить vi.
Антоній

0

Я думаю, що порівняти в vi, що відбулися з часом, важко зробити порівняння.

Коли я навчався в коледжі, я використовував звичайну ваніль vi на тупому терміналі (а також на емуляторі терміналу на Mac), який підключався до мейнфреймів за допомогою системи V. Цього ви навіть не можете знайти.

Але я навіть не впевнений, що це правда vi. Приблизно в цей час було зроблено багато клонів і портів, оскільки vi в той час не був відкритим кодом. А коли продавці робили клонів, вони додавали функції, яких не було у ві. Історія начебто звивиста. Ви можете прочитати його у Вікіпедії та інших місцях.

Тож якщо ви не використовували певних постачальників / обладнання, ви використовували не vi, а щось на зразок vi.

Але я пам'ятаю, що vi (або клон, який я використовував) був дуже мінімалістичним у своєму інтерфейсі (без кольорів, без INSERT етикетки, без mulitple undos тощо), але потужний у тому, що він насправді може досягти. Дуже практична.


0

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

Витяг із FAQ:

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