Vim

Vim (скор. від V i Im proved, вимовляється "вим") - вільний режимний текстовий редактор, створений на основі більш старого vi. Нині це один з найпотужніших текстових редакторів з повною свободою настройки та автоматизації, і створеним завдяки цьому розширень і надбудов.

Інтерфейс користувача Vim'а може працювати в чистому текстовому (консольному) режимі.

Існує і модифікація для використання в графічному віконному інтерфейсі - GVim. Багато користувальницькі команди в GVim можуть викликатися через відповідні пункти меню.



1. Відмінності від "звичайних" текстових редакторів

Одна з головних особливостей редактора - застосування двох основних, вручну перемикаються, режимів введення: командного (після запуску редактор знаходиться в ньому) і текстового (режим безпосереднього редагування тексту, аналогічний більшості звичайних редакторів).

Vim НЕ інтуїтивний, так що ефективна робота з редактором вимагає попереднього навчання.

2. Функціональність

2.1. Огляд: вибрані поліпшення vi

GVim

У порівнянні з класичним VI Vim відрізняється наступними поліпшеннями:

  • Робота з багатьма файлами одночасно. Розбиття вікон редагування може проводитися багаторазово як по горизонталі, так і по вертикалі.
  • Підтримка Unicode.
  • Підтримка візуального режиму, який дозволяє, наприклад, виконувати операції над блоками тексту.
  • Необмежена глибина скасування (undo) і повернення (redo) дій.
  • Режим порівняння двох файлів, копіювання змін з одного файлу в інший.
  • Широка файлова підтримка (файл з довідкою і більше 200 файлів з описом синтаксису).
  • Підсвічування синтаксису, автоматичне визначення величини відступу для кожного рядка в залежності від мови програмування (спочатку підтримує більше 200 мов програмування та форматів конфігураційних файлів).
  • Інтеграція з операційною системою, яка дає можливості, близькі до інтегрованим середах розробки, такі як пошук помилки за повідомленням компілятора, автодоповнення ідентифікаторів та ін
  • Підтримка мови сценаріїв; можливість написання модулів розширення - плагінів.
  • Автоматичне продовження команд, слів, рядків цілком і імен файлів.
  • Автоматичний виклик зовнішніх команд (наприклад, автоматична розпакування файлу перед редагуванням).
  • Розпізнавання та перетворення файлів різних форматів.
  • Зручний механізм історії команд, пошукових слів і т. д.
  • Запис і виконання макросів.
  • Можливість збереження налаштувань та сеансу.
  • Можлива інтеграція з мовами програмування Perl, Tcl, Python і Ruby.
  • Підтримка мов з письмом справа наліво (арабських і інших).
  • Згортання (folding) тексту для кращого огляду.
  • Можливе використання графічного інтерфейсу в спеціальних версіях ( GTK, Motif, ...).
  • Добре конфігурується і настроюється під потреби користувача.
  • Для програмістів: підтримка циклу розробки "редагування - компіляція - виправлення "програм. Автоматичне виконання зборки / компіляції, виявлення і розпізнавання помилок, перехід до рядків помилок у тексті програми.
  • Для шанувальників vi: практично стовідсоткова сумісність з vi.

У редакторі Vim вдалося об'єднати всі найбільш значущі удосконалення vi.


2.2. Довідкова система Vim

Vim має досить зручну і докладну довідкову систему, і систему навігації і переходу між її розділами. Щоб відкрити будь-який її розділ досить скористатися командою: help в командному режимі.

Наприклад, щоб дізнатися, як написати власний плагін для Vim достатньо набрати: help write-plugin.

3. Термінологія

  • буфер - тимчасове сховище тексту.
  • вікно - окрема копія vim обмежена частиною екрану.
  • іменований регістр - іменоване сховище тексту для множинних вставок.
  • регістр за замовчуванням - неіменованого сховище тексту.
  • вкладки ("таби", "tabs") - документи відкриті в одному вікні.
  • абревіатури - скорочення, при наборі яких, вони розгортаються в більший текст.
  • keymap - карта клавіш.

4. Режими роботи

4.1. Нормальний режим

Звичайно ж, подібних команд існує набагато більше. Справа в тому, що вам потрібно вивчити ці команди, щоб використовувати. Ви можете заперечити, що, ймовірно, не зможете вивчити всі ці команди, адже існують сотні різних команд переміщення, серед яких є й прості, і досить хитромудрі, і що підуть тижні тренувань на вивчення всіх цих команд. Що ж, вам і не потрібно вивчати їх усі. Замість цього потрібно розібратися в своєму індивідуальному стилі редагування і вивчити тільки ті команди, які допоможуть зробити його більш ефективним. [3]

Bram Moolenaar

За замовчуванням Vim починає свою роботу в нормальному режимі, який також називають командним. Натискання клавіш в цьому режимі сприймається як команди (копіювання, видалення, переміщення тексту і т.д.).

Серед команд нормального режиму є "Односимвольний" команди. Так, наприклад, натискання $ призведе до переміщення курсору в кінець рядка; натискання клавіші 0 (нуль) - в початок; D (у верхньому регістрі) - до видалення (d elete) частини поточного рядка від поточного положення курсора до кінця; С (у верхньому регістрі) - до заміни (c hange) частини поточного рядка від поточного положення курсора і до кінця і т. д.

Інші команди для своєї роботи будуть чекати подальшого продовження введення. Наприклад f ​​відповідально за швидке переміщення в рядку до наступного набраному після себе символу. Тому після натискання f Vim буде чекати набору цього символу, щоб використовувати його в якості шуканого.

Після натискання y (y ank), d, c і інших подібних "керуючих" клавіш Vim буде очікувати подальшого введення команд, задаючих об'єкт, над яким буде вироблено дію (копіювання, видалення або заміна відповідно). Так, d a w видалить поточне слово під курсором (d elete a mbient w ord), а d $ - всі символи починаючи з поточного положення курсора і закінчуючи кінцем рядка.

Подібні дуже прості команди використовуються не тільки в "ручному режимі" (коли при необхідності набираються всякий раз з клавіатури), але і при завданні складних послідовностей дій.

Нормальний режим - це центральний режим, з якого здійснюється перехід в усі інші. З будь-якого режиму в командний режим можна перейти, двічі натиснувши клавішу Esc (в більшості випадків достатньо одного натискання).



4.2. Режим безпосередній вставки тексту

Для переходу з командного режиму в режим вставки потрібно натиснути i. У цьому режимі Vim працює так само як і більшість "звичайних" текстових редакторів. Набрані символи не сприймаються як команди, а вставляються в існуючий текст.

Для вставки, видалення, зміни і автодоповнення тексту також можуть використовуватися клавіатурні поєднання (Ctrl + R і ін)



4.3. Режим командного рядка

Цей режим викликається натисканням: з нормального режиму. За двокрапкою слід складна команда (до пр. пошуку або заміни), яка після введення передається на виконання натисканням Enter. Після виконання команди редактор повертається в нормальний режим. До цього режиму також відносяться команди пошуку далі по тексту /, пошук назад по тексту ( ?) і команда-фільтр ! для передачі даних зовнішньому фільтру.


4.4. Візуальний режим

Візуальний режим відсутній в Vi і вперше з'явився в Vim. Він чимось схожий з командним. За допомогою спеціальних команд, що управляють, в поєднанні зі стрілками і командами навігації, можна посимвольно, порядково або у вигляді блоку виділяти фрагменти тексту і потім застосувати до них команди нормального режиму. Редагування в цьому режимі простіше, ніж у нормальною, тому що чітко видно до якого блоку тексту буде застосовуватися викликана команда редагування.

5. Автоматизація операцій

Здатність Vim розрізняти текстові об'єкти (слова, речення, параграфи, рядки, окремі символи і т. д.) дозволяє задавати послідовність дій для автоматизації певних операцій.

Так, після команди

 nmap    byei  <<  ESC  >  ea  >  C  -  R  >  0  > <  ESC  > 

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

, якщо transform - то в і т.д.

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

Всі дії, які здійсненні в Vim "вручну" (тобто безпосередньо людиною з клавіатури) можуть бути автоматизовані (включаючи перемикання між різними режимами).


6. Історія версій

Історія версій
Дата Версія Зміни
1988 1.0 Заснований на Stevie для Amiga, названий Vi IMitation, ніколи офіційно не виходив.
2 листопада 1991 1.14 [4] Перша загальнодоступна версія для Amiga
1992 1.22 [4] Портований в Unix. Vim now competes with vi. This was when Vim became Vi IMproved
12 серпня 1994 3.0 [4] Підтримка розбиття вікон
29 травня 1996 4.0 [4] Графічний користувальницький інтерфейс
19 лютого 1998 5.0 [4] Підсвічування синтаксису, проста мова сценаріїв (визначені користувачем функції, команди і т. д.)
6 квітня 1998 5.1 Виправлення багів і інші зміни.
27 квітня 1998 5.2 Підтримка довгих ліній, вбудований файловий браузер, діалоги, спливаючі меню, select mode, файли сесій, визначені користувачем функції, команди, tcl -інтерфейс і інші зміни.
31 серпня 1998 5.3 Виправлення багів і інші зміни.
25 липня 1999 5.4 Простої шифрування файлів, різні поліпшення
19 вересня 1999 5.5 Виправлення багів, різні поліпшення
16 січня 2000 5.6 Нові файли синтаксису, виправлення багів і інші зміни
24 червня 2000 5.7 idem
31 травня 2001 5.8 idem
26 вересня 2001 6.0 [4] Згортання, плагіни, багатомовність та інші зміни
24 березня 2002 6.1 Виправлення багів
1 червня 2003 6.2 GTK2, підтримка арабського,: try command, minor features, bug fixes
7 червня 2004 6.3 Виправлення багів, оновлення перекладів, mark improvements
15 жовтня 2005 6.4 Виправлення багів, поновлення підтримки Perl, Python і Ruby
7 травня 2006 7.0 Spell checking, Автодоповнення, вкладки ("tab-и"), підсвічування поточного рядка і стовпця, undo branches, та інші зміни
12 травня 2007 7.1 Виправлення багів, нові виконувані файли і файли синтаксису, і інші зміни
9 серпня 2008 7.2 Виправлення багів, нові виконувані файли і файли синтаксису, поліпшення безпеки та інші зміни
15 серпня 2010 7.3 Виправлення багів, нові виконувані файли і файли синтаксису, поліпшення безпеки, "вічний" undo, припинення підтримки Mac OS 9 і GTK1, підтримка Lua та інші зміни

7. Портіруемость

Одна з переваг редактора Vim - доступність для безлічі операційних систем. Це особливо актуально для системних адміністраторів, яким доводиться редагувати файли на різних платформах.

Vim працює на наступних операційних системах:


8. Нагороди

З 2001 по 2004рр. Vim був переможцем устраиваемого LinuxJournal конкурсу Readers 'Choice Awards в категорії "Улюблений текстовий редактор". Він також отримував нагороди Linuxworld Editors 'Choice Award в 1999 і Slashdot Beanie Award в 2000.

9. Ліцензія

Vim поширюється по GPL -сумісної ліцензії відомої як Charityware ( англ. charity - Благодійність). Частина коштів, пожертвуваних на розробку Vim, витрачається на підтримку сиріт Уганди допомогою організації ICCF Holland.

10. Розширення Vim

Загальне число розширень, доступних на офіційному сайті, складає більше 3000 [5].

До популярних розширень Vim, зокрема, відносяться:

  • MiniBufferExplorer;
  • taglist - для перегляду структури програмних файлів (список функцій і пр.);
  • bufexplorer;
  • closetag - для більш зручного закривання тегів при редагуванні html і xml файлів;
  • supertab - для автодоповнення слів натисканням Tab (при цьому відступи рядків працюють як зазвичай);
  • project - для організації файлів в проекти для більш зручної навігації по ним;
  • indexer - для генерації тегів за допомогою ctags для всіх файлів, що входять в проект (проект може бути організований як плагином project, так і без нього). Теги потрібні для швидкого переміщення від виклику функції до її оголошенню, для отримання списку членів структури або класу, і т.д.

Завдяки гнучкості можливостей, що надаються за допомогою розширень, Vim також можна використовувати в якості персонального вікі.


Примітки

  1. Vim | freshmeat.net - freshmeat.net / projects / vim
  2. Vim in non-English languages ​​- www.vim.org / translations.php. Читальний - www.webcitation.org/6194PJwQA з першоджерела 23 серпня 2011.
  3. Сім звичок ефективного редагування текстів - www.moolenaar.net / habits_ru.html. Читальний - www.webcitation.org/6194PrvNo з першоджерела 23 серпня 2011.
  4. 1 2 3 4 5 6 Moolenaar, Bram Vim, an open-source text editor - www.free-soft.org/FSM/english/issue01/vim.html (2002-01-15). Читальний - www.webcitation.org/6194QKnew з першоджерела 23 серпня 2011.
  5. Vim Scripts - www.vim.org / scripts / index.php (Англ.) . Читальний - www.webcitation.org/65BBBU1zc з першоджерела 3 лютого 2012.