Vi vs vim, чи є якась причина, чому я б хотів колись використовувати vi?


84

Я трохи знаю про * NIX текстових редакторів (зараз мігруючи з nanoдо vim), і, трохи оглянувши Unix & Linux SE, помітила, що viвикористовується замість 'vim' у досить великій кількості питань. Я знаю, що "vim" означає "Vi IMproved", і, маючи на увазі, мені цікаво, чому хтось скоріше використовує vi замість vim. Чи має ви якась значна перевага перед vim?

Редагувати: Я думаю, що моє запитання трактується неправильно. Я знаю, що vim здебільшого є значно потужнішим та повноцінним, ніж vi. Мені хочеться знати, чи є якісь можливі випадки, коли vi має перевагу перед vim, наприклад, менше використання пам’яті, поширеність у * nix системах тощо.


25
Приємним viє те, що ви можете очікувати, що це буде в кожній сумісній системі POSIX.
Йорданм

1
Насправді стандартна установка Ubuntu включає в себе, viа не vim.. Ubuntu - це один із найбільш зручних для користувача
distro

10
@amyassin Це неправильно, Ubuntu, як і більшість дистрибутивів Linux, включає vim. viце лише символічне посилання, яке в підсумку вказує на vimвстановлення за замовчуванням.
jlliagre

2
Моя порада: Використовуйте Vim, але вчіться, viвикористовуючи специфікації POSIX дляvi . Таким чином, ви володієте портативними знаннями, а також знанням розширень Vim.
Wildcard

1
@DDK Ви пропустили "зрештою" в моїй заяві. "ls -l / etc / alternative / vi" -> "lrwxrwxrwx 1 корінь кореня 17 січня. 1 2016 / тощо / альтернативи / vi -> /usr/bin/vim.tiny"
jlliagre

Відповіді:


61

viє (також) стандартним редактором POSIX . Реалізацій існує багато і vim, мабуть, є найбільш популярним принаймні в Linux.

Хоча багато традиційні ОС, сумісні з Unix, забезпечують viреалізацію, дуже близьку до стандартної, vimдодали безліч додаткових функцій, що роблять її мечем з двома кінцями.

Звичайно, ці розширення зазвичай розроблені для полегшення процесу редагування та надання корисних функцій та функціональних можливостей. Однак, коли ви звикли до деяких із них (не таких косметичних, як фарбування синтаксису, а тих, що змінюють поведінку редактора), ви можете легко забути, що вони є специфічними; та використання іншої реалізації, включаючи ті, що базуються на оригінальному BSD-коді, може бути дуже неприємним. Справедливо і протилежне.

Це досить схоже на проблему, що трапляється із сценаріями, що використовують не башизми POSIX, які стикаються з більш ортодоксальними реалізаціями оболонок, як dashабо ksh.


29

Жоден vi не має суттєвої переваги перед vim, а навпаки. Vim має більше переваг, ніж Vi. Можливо, вас зацікавить: Чому, о ЧОМУ, робіть це #? @! горіхи використовують vi?

Редагуйте також читайте: чи варто VIM докладати зусиль?


4
Так. Я не використовую жодної IDE, оскільки редактори, які вони змушують вас використовувати, просто не Vim.
Кіт

1
@Keith Я використовую і Xcode, і Eclipse, і я все ще можу робити редагування лише для vi.
ott--

@Keith SlickEdit має чудову емуляцію Vim, і IDEA наближається до неї. Також у Visual Studio є ViEmu.
demonkoryu

1
У IntellIJ також є гарний плагін vim, що перевершує стандартну поведінку редактора.
JulienD

24

Провівши велику частину свого життя (не враховуючи дитинства), зручно редагуючи разом із Vim, я провів близько місяця лише за допомогою vi. Роблячи це, я зрозумів, що залежав від Vim для всіх моїх потреб у зміні тексту. Перед моєю поїздкою з vi, коли мені потрібно було замінити якийсь текст або виконати подібну операцію у великій групі файлів, я просто відкривав би файли у Vim і виконував :bufdoкоманду, і коли б мені доводилося відступати або відформатувати деякі файли, Я відкрив би їх у Vim і використовував Vim =та gwкоманди. Я залежав від Віма. Зрозумівши, що vi не мав цих команд, я був змушений виконувати об'ємні перетворення тексту sedта дізнався багато про інші програми, такі як awkіindent. Хоча в кінцевому підсумку я перейшов до використання Vim, знання, які я отримав, використовуючи менш представлений редактор, були суттєвими і виявились надзвичайно корисними. Крім того, щоб дізнатися про інструменти поза текстовим редактором, я також ознайомився краще з vi. Щоразу, коли я працюю над новою системою або сервером, на якому немає Vim, я відчуваю себе набагато комфортніше, використовуючи vi, ніж я робив перед місячною екскурсією.

Крім того, минулого місяця я встановив Linux на дешевому планшеті WM8650 і виявив, що помітна різниця в роботі між Vim та vi, тому я, як правило, використовую vi на планшеті.


3
Я вважаю, що це поширена проблема в ІТ - інструменти, які допомагають нам, також можуть затьмарити те, чого нам краще вивчити.
danno

На насправді, звернення в місці редагування файлів на багатьох файлах може не переносимо бути зроблено з Awk або Sed або . ( -iУвімкнення обох є розширенням GNU.) Але ви можете використовувати їх портативно з чимось на зразокfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

Мені важко було б жити без vim, але я не можу витримати vi . Однак навчившись колишньому, ви принаймні залишите вам уявлення про те, як боротися з пізніше, коли це все, що є в наявності.

Інтерфейс vim за замовчуванням насправді досить близький до vi. Якщо я працюю над системою з vim, перше, що я роблю, - це додати цей матеріал до ~/.vimrc:

syntax enable
set nocp
set wildmenu

Є ще маса інших речей, які я віддаю перевагу - норап та нумерація тощо, але нічого неважливо. "синтаксис увімкнення" просто вмикає основне підсвічування синтаксису (дещо б'єфер: також filetype plugin onє основним); "nocp" вимикає сумісність vi, і саме це починає відрізняти vim від ye olde vi (наприклад, це дозволяє, showmodeщо робить весь досвід дещо більш людським, оскільки тепер у вас є поняття про те, чи ви командуєте, чи ~ INSERT ~ режим). "wildmenu" просто дає горизонтальне меню завершення під час виконання деяких речей, що також полегшує життя.

Засоби редагування тексту vim - нікому не потрібні - крім emacs, я ніколи не бачив і не чув про програмне забезпечення, яке наближається. Вони непрості в навчанні, але як тільки ви їх знаєте, вони набагато швидші за використання меню миші та набагато більш динамічні, ніж прості ключові альтернативи макросу в інтерфейсах, заснованих на меню миші. Для програмування я іноді використовую vim поряд з IDE, як Eclipse, але більшу частину роботи я виконую в vim.

Якщо ви скористаєтеся цим шляхом, хаха, загляньте в плагіни автозаповнення та тегів. І остерігайтеся темної сторони.


Я завжди додаю set mouse=aтеж.
ott--

Щодо коментаря до програмування, вам можуть здатися цікавими екліми ...
ire_and_curses

@ire_and_curses: не пробував. Eclipse і vim відстежують вихідні файли і дозволяють оновлювати їх зовнішньо, а перехід з одного робочого стола на інший - перегортання з одного робочого столу на інший. Здається, цілком ідея Тхо.
goldilocks

Хоча я не вважаю, що ця відповідь має бути обраною відповіддю (оскільки вона є необ’єктивною), саме такий тип точки зору є корисним для розуміння відмінностей. Дякуємо, що зайняли посаду.
генеорама

8

Перевага полягає в тому, що vi, як правило, попередньо встановлюється в корпорації UNIX, наприклад AIX або Solaris. Крім того, vim не доступний на інсталяційних носіях.


1

Я помітив , що я тільки вибрати Viбільш , VIMколи я скопіювати і вставити текстовий документ або файл конфігурації , який я використовував catкоманду. Це тому, що коли я намагаюся, ctrl-cа потім ctrl-vу VIMвідкритий документ, він змушує всі рядки мати перед ними коментар. Тому , коли я використовую , Viщоб ctrl-vабо pasteв Viвідкритий документ, він вставляє саме те , що я скопіював с. Крім цього, я користуюся VIMцілий день.

Насолоджуйтесь!


5
Спробуйте:set paste
Патрік

3
встановити pastetoggle = <F2> в .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Дейв,

1

Як уже згадувалося в попередніх відповідях, vi поставляється майже з кожною системою UNIX.

Я просто хотів додати приклад. Arch Linux - це особливо популярний і легкий дистрибутив, який не встановлений, ані базовий дистрибутив за замовчуванням не постачається з vim, однак обидва приходять з vi.

Це не є перевагою vi per se , тому що ви можете просто встановити vim вручну, і цього мало що потрібно зробити при встановленні, що вимагає текстового редактора, і нічого, коли vim не перевершує vi за призначенням. Але розуміння різниці і того, що vi є більш повсюдним і легким, ніж vim, дає йому деякі ніші переваги.

Крім того, щоб бути всеохоплюючим, ніхто ще не зазначив прямо, що vi є прямим попередником vim. Вім розраховував саме на те, що є, і багато іншого.

Тож у прямому відношенні vim перевершує vi, тому що він був розроблений так, щоб бути .


1

Єдина причина коли-небудь використовувати vi over vim - це те, що у вас немає іншого вибору.

Є багато, багато причин, чому vim означає "vi вдосконалений"!

Позичивши пов’язаний пост, я відповів: -

  1. Кілька вікон - горизонтальні, вертикальні та вкладки.
  2. Візуальне виділення.
  3. Довідка в Інтернеті за допомогою команди: help.
  4. Запишіть макроси в реєстр, який ви можете потім виконати.
  5. Скасуйте (і повторіть) кілька разів, а не шалене перемикання старого vi.
  6. Історія командного рядка, історія пошуку.
  7. Ціла мова, вбудована разом із низкою доступних функцій, наприклад, getcwd ()
  8. Значне розширене узгодження візерунка.
  9. Завершення слова за допомогою ctrl-P & ctrl-N.
  10. Вбудований файловий навігатор (трохи незграбний, але може бути корисним).
  11. Ключ ESC насправді запускає команди, з яких ви намагалися втекти, а не (шалено) запускати їх як vi.
  12. Можливість запускати команди на всіх буферах, аргументах або вікнах через bufdo, argdo & windo.

Напевно, ви могли б привести "багато, багато" причин, про які ви згадали у відповіді unix.stackexchange.com/a/425597/85039 тут. Це зробило б цю відповідь трохи кращою; інакше він читається більше як коментар, ніж фактична відповідь
Сергій Колодяжний,

Точка взята. Відповідь оновлена, запозичивши відповідну відповідь, яку я зробила вчора.
Пол Т

1

Про це свідчить Вім Коанс :

Master Wq і майстер Unix

Старий майстер Unix прийшов до Master Wq. «Мене хвилює, Wq. Ви вчите шлях Віма. vi святий, але Vim - ні; його код розповсюджується, його функції натовпу пам'яті; її бінарні файли величезні, поведінка непослідовна. Це не шлях Unix. Я боюся, що ви введете в оману своїх учнів. Що можна зробити? "

Майстер Wq кивнув. "Ви маєте рацію", - сказав він. «Вім зламаний. Давайте виправимо це. Почнемо?"

Старий майстер Unix погодився і відкрив оболонку. Він набрав:

$ vi vim.c

Він почав кодувати. Майстер Wq деякий час спостерігав, а потім запитав його: "Яку реалізацію vi використовуєш? Nvi? Vim? Елвіс? "

"Не знаю", - сказав майстер Unix. "Не має значення".

Майстер Wq кивнув. Майстер Unix на хвилину сидів приголомшений і закрив документ, який не зберегли.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.