Vim … Бути може він дійсно – найкращий?, Інші текстові редактори і програми для верстки, Програмні керівництва, статті

Володимир Попов, СофтТерра

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

За роки спілкування з обчислювальною технікою мені довелося побачити безліч коштів набору і редагування тексту. Консолі “світу” і “Саратова”, термінали ЄС, уже цілком “зрілі” редактори DEC-івських VMS / RSX, “веселка” редакторів під MS DOS і так далі. Змінювалися платформи та операційні системи, засоби виведення і введення, незмінною залишалася потреба в створенні програмного забезпечення, а значить – в програмах, за допомогою яких це ПО створюється. Є, правда, ще IDE (інтегровані середовища розробки), є visual (візуальні) кошти, але немає програмування без програм-редакторів. Текстові процесори, а тим більше видавничі системи – принципово інші продукти, для написання програм явно надлишкові з одного боку і недостатні з іншого. Саме хорошого редактора не вистачає в стандартному наборі сучасного користувача MS Windows, яких більшість серед тих, хто сидить за IBM PC. Можна додати: на жаль, але факт від цього фактом бути не перестане.

Буде неправильно сказати, що написання текстів програм – справа тільки професійних програмістів. Навіть якщо не брати до уваги ентузіастів, то відмахнутися від тієї обставини, що всякий, що задумав обзавестися своєю сторінкою в Інтернет, потрапляє в положення програміста – просто неможливо. Число останніх неминуче “прагне” до числа користувачів Мережі, ім’я яким – “легіон”. Поекспериментувавши якийсь час з MS Word, Adobe Photoshop і FrontPage, більшість таких програмістів-“неофітів” приходить до висновку, що найкращий інструмент написання html-коду – notepad. Вам не доводилося чути таке твердження? Воно не безпідставне: notepad чи не єдиний саме редактор серед найбільш поширених програм для MS Windows. “Саме редактор” означає в даному випадку інструмент для ефективного введення та модифікації тексту, не обтяжений засобами створення кращого дизайну, розширеними можливостями друку тощо. Але якщо таку популярність отримав notepad – редактор, який поступається за своїми можливостями навіть допоміжним вбудованим редакторам інтегрованих середовищ розробки кшталт Borland-івських Turbo і оболонок начебто Far, то, може, має сенс звернути увагу на редактори, використовувані професійними програмістами?

У світі UNIX найпомітнішим в цьому класі, безумовно, є vi (VIsual editor) і його сучасний “нащадок” – vim (Vi IMprooved – покращений). Він частіше за інших викликається за замовчуванням, його інтерфейс частіше згадується поряд з визначеннями “Сумісний” і “подібний” і так далі. Але, можливо, це – данина традиції? В великій мірі – так. Твердження про те, що цей редактор – кращий, потребує в доказі. Деякі аргументи на користь цього і наводяться нижче.

Перш за все, умовою необхідним, хоча і не достатнім, є функціональна повнота редактора: він повинен вміти все, що тільки може знадобитися при роботі з текстом. Термін “все” конкретизувати неможливо, але досить буде сказати, що vim має обмежене тільки здоровим глуздом кількість буферів (фактично – Відкритих файлів) і вікон (в даному випадку назва “вікно” дуже точно відображає суть того, що відбувається: є файл, а є вікно, через яке ми вміст цього файлу розглядаємо). Вікно може займати всю площу екрану, а може – частина, причому будь-яку, тобто екран може ділитися як по горизонталі, так і по вертикалі. Перемикання – довільні. Сказане справедливо як для графічного, так і для консольного режимів. Крім стандартної для “дорослих” редакторів можливості створення макрокоманд (фіксованих послідовностей елементарних команд редактора), є розвинений мова програмування. Редактор має 5 режимів (modes):

За замовчуванням <Esc> (Іноді – два натискання) повертає в “нормальний” режим,
<Ins> – Переводить в режим “вставки”, а з нього – в режим “заміни”. Двокрапка в “нормальному” режимі дасть переклад в “командний” режим. Символи операторів з, знову-таки, “нормального” режиму переводять в “операторний”. Символи <v> і
<V> – В “візуальний”. Оскільки дії редактора після натискання будь-якої з клавіш в будь-якому режимі програмуються, то, як ви, мабуть, вже здогадалися, у увлекшегося налаштуванням vim користувача, цей редактор цілком може стати воістину невпізнанним.

Тут ми підходимо до другої сильної стороні vim – виняткової модифікованості. Чи потрібно це? Беруся стверджувати: так. Змінюються клавіатури, хоча їх типів, втім, і в кожний конкретний період – предостатньо, якщо говорити не тільки про IBM PC. Змінюються пристрої введення, завдання, нарешті. У vim як у гідного члена сімейства найбільш типових UNIX-додатків налаштування зберігаються в конфігураційному файлі, яких, в свою чергу, може бути безліч. По одному на тип розв’язуваних задач, наприклад. І назва і місце розташування конфігураційного файлу традиційно для UNIX: .vimrc в “домашньому” каталозі користувача. Приклад (vimrc_example.vim) – в каталозі самого vim (для Linux зазвичай –/usr/share/vim/vimNN/, Де NN – номер версії. Одним словом, якщо ви “створюєте” свій редактор практично самі, то таке рішення претендує на звання “рішення назавжди”: не в сенсі незмінності, зрозуміло, а в сенсі постійної готовності відповідати вашим новим вимогам.

Вперше познайомився з можливостями конфігурації vim, важко встояти перед спокусою “підігнати” його під “милий серцю” прототип: для когось – MultiEdit, для когось – nedit, а для когось – і notepad. Це не складно. Однак не варто поспішати: vim має можливості, яких, цілком можливо, не було у “прототипу”, а познайомившись з ними одного разу, ви, можливо, вже не захочете від них відмовлятися. Перелічити всі ці можливості навряд чи вдасться вже хоча б тому, що як всяка відкрита система, vim розвивається зусиллями багатьох людей і бути в курсі всіх розробок просто не реально. Спробую перерахувати найбільш відомі можливості. Маються на увазі настройки “за умовчанням”, введення в “нормальному” режимі, крім тих випадків, коли обмовляється інше. Двокрапка говорить про переході в командний режим.

Зрозуміло, можна як завгодно позиціонуватися у файлі:

Дуже зручним є механізм міток, до яких завжди можна повернутися:

Ще одна можливість, досить рідко зустрічається у редакторів, – безліч іменованих буферів. В останніх версіях MS Windows це називається багатосторінковим clipboard-ом. Буфери, як і мітки, метятся однією буквою:

Зрозуміло, є безліч засобів пошуку / заміни:

Зрозуміло, є повний список файлових операцій. Перераховувати всі навряд чи має сенс: в них немає нічого “екзотичного”. Цікавіше згадати “автозаповнення”: набравши пару-трійку перших символів і не виходячи з режиму “вставки”, натисніть <Ctrl-n> (Або <Ctrl-p>): Vim почне пропонувати варіанти продовження слова з наявних у вашому файлі. Для пишуть на С додам: і в include-Файлах теж. Мене, свого часу, ця можливість примирила з довгими, інформативними мітками й іменами змінних: я перестав в них помилятися. Ще один сюрприз: <[i> покаже в командному рядку визначення змінної, що знаходиться під курсором, а <[d> – Визначення макро, якщо символи під курсором є змінною або макрокомандою, зрозуміло. І ще “фокус” – довідка з приводу коду символу під курсором, причому відразу в усіх системах обчислення крім двійковій, хіба що. Послідовне натискання <ga> дасть практично повну інформацію з приводу символу під курсором.

Зрозуміло, можна відмовитися від зроблених змін (undo), ввівши просто <u>, А можна відновити відразу всю редаговану рядок: <U>. Іноді буває потрібно відмовитися від скасування змін (undo the undo’s). Можна й це: <Ctrl-R>

Можна змінити регістр символу під курсором натисненням <~>. І, наостанок, часто вельми полегшує життя точка <.> – Повторити останню операцію.

Тепер зрозуміло, чому не достатньо одного режиму: все розмаїття функцій важко покрити тільки функціональними клавішами, а використання клавіш звичайних вимагає відмови на якийсь час від режиму екранного редагування. Серед безлічі установок, що задаються командами “:set …” є і задає режим вставки як діючий за умовчанням, що робить vim схожим на більшість екранних редакторів. Спробуйте. І, швидше за все, ви переконаєтеся, що заданий за замовчуванням розробниками “Нормальний” режим з точки зору витрат часу економічніше.

Схожа ситуація з запропонованими розробниками для використання за замовчуванням клавішами. Для не знайомих з UNIX призначення клавіш для пошуку, копіювання, вставки здається незвичним. Однак, якщо разом з vim ви будете освоювати, наприклад, Linux, то дуже скоро виявите, що ті ж клавіші “працюють” і при перегляді man-сторінок, і в популярній screen, і навіть для стандартного інтерпретатора командного рядки bash, виявляється, існує vi-подібний режим. Одним словом, в UNIX-середовищі освоєння vim або проходить легше, якщо ви не зовсім “чайник”, або “стане в нагоді” при подальшому знайомстві з системою.

Зрозуміло, vim має підсвічування синтаксису, причому для десятків мов програмування і конфігураційних файлів. Для версії 5.6 підкаталог syntax містить 189 файлів загальним обсягом понад мегабайта, що, в свою чергу, становить майже п’яту частину обсягу дистрибутива.

Зрозуміло, vim прекрасно документований: без малого 2 мегабайта файлів в текстовому форматі, забезпечених системою перехресних посилань і пошуку. Плюс невеликий скрипт, що перетворює ці текстові файли в універсальні html.

Зрозуміло, vim портований практично на всі платформи. Включаючи всі відомі ОС від MicroSoft, не в докір будь сказано софтверному гігантові.

І це ще не все. Півтора десятка утиліт, розроблених спеціально для vim, доповнюють і без того чималий список можливостей. Серед них кошти для створення перехресних посилань з файлами інших форматів, “Малювання” псевдографікою, таблиці, що доповнюють форматер, конвертери тощо.

Ну, і, зрозуміло, vim безкоштовний. Якщо бути точним, то за нього не обов’язково платити. Плата ж, якщо така станеться, переводиться у фонд допомоги дітям Уганди. Не поодинокий в світі Open Source, але, тим не Проте, вельми шляхетний жест розробників.

Потрібно визнати, що vim складний або, по крайней мере, незвичний для користувачів не-UNIX систем. Саме їм стали в нагоді б всі можливості конфігурування, але їх вивчення здається на початку шляху таким “виснажливим” … Не варто впадати у відчай. Крім документації в складі дистрибутива vim, варто познайомитися з сайтом www.vim.org. Там можна знайти посилання на сайти ентузіастів vim, що пропонують свої конфігураційні файли для різних операційних середовищ. Дуже цікавий сайт vim.online, Де всі бажаючі діляться своїм досвідом роботи з vim. На серпень 2001-го на сайті – понад 100 рад, серед яких немає непотрібних, а тим більше невірних.

На закінчення потрібно сказати про недоліки. Не без цього.

Внутрішня складність vim може зробити його досить повільним на “слабких” машинах. Помітне час іде на пошук, повільно може переміщатися маркер в “візуальному” режимі. Помітити це можна, повторюся, тільки на машинах типу Pentium-166, наприклад, але – можна.

Використання клавіш крім функціональних припускає, що включена не “ru”-розкладка. При роботі з текстами програм це, як правило, не важливо, а от якщо оброблюваний текст – виключно кирилиця, то перемикання розкладки кожен раз, коли буде потрібно команда, яка викликається алфавітними клавішами з “нормального” режиму, – дратує. Бути може, варто для роботи з подібними текстами мати свій конфігураційний файл з “акцентом” на використання функціональних клавіш, що не залежать від розкладки клавіатури.

А спробувати, все-таки – варто. Особливо працюють у різних операційних середовищах. Якщо вам дійсно потрібен редактор, спробуйте й ви, майже напевно, не пошкодуєте.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*