Путь к VIM. Часть 1 |
Оглавление:Вступление ВступлениеНеобходимость использовать текстовый редактор (ТР) возникает достаточно часто - особенно у пользователя систем, подобных UNIX. Поэтому каждый стремится подобрать себе редактор по вкусу. Начнем с того, что их огромное количество, и даже под Linux их уже написано достаточно много. Среди них есть очень достойные кандидаты на звание лучшего, но ... Оставив философский аспект выбора ТР, я просто изложу в краткой форме, как выбирал я сам. Прежде всего, мне нужен был быстрый и небольшой редактор, с подсветкой синтаксиса, макросами и возможностью оперативно выполнять команды, не выходя из редактора, ну такие как make и др. Найти такой редактор не так уж просто! Под MSDos я пользовался qedit, который имел только два достоинства - он был очень маленького размера и грузился мгновенно даже на машинах, которые уступают по быстродействию современным калькуляторам. На Amiga я пользовался CED, который умел все, кроме подсветки синтаксиса. Потом, правда, появился ProgEdit, но он был уж очень неповоротлив и работал со скоростью тормознутого текстового процессора. Он у меня не прижился. Когда я вернулся на PC (После Amiga я более-менее комфортно смог себя чувствовать только на Pentium II) то долго перебирал различные редакторы и остановился на Aditor. На мой взгляд, это лучший ТР на этой платформе. Он вполне может удовлетворить требования широких масс, оставаясь быстрым и малогабаритным. Собственно я еще не встречал ни одного человека, который бы поспорил со мной по этому вопросу. Затем началась гонка производителей железа и программного обеспечения, намек, я думаю, достаточно прозрачный. Меня как-то не слишком привлекала перспектива перманентного апгрейда и изучения новых творений софтверного гиганта. Поэтому я начал искать альтернативы. Мои впечатления о Linux подробно изложены в другом документе и здесь я не буду касаться этой темы. Скажу только, что я стал пытаться переползти на Linux. Подобная миграция, конечно, вызвала массу проблем. Главная из них - это то обстоятельство, что при всем нежелании существует объективная необходимость работать в обеих операционных системах и, что еще хуже, - держать их обе на одной машине. Вторая проблема - это возрастающее количество программного обеспечения, подлежащего изучению. О том, что VIM существует на многих платформах, я знал еще со времен Amiga. Более того, я слышал восхищенные отзывы от людей, деяния и авторитет которых вызывает глубокое уважение. Конечно, я решил попробовать. От первого знакомства осталось только чувство недоумения и полной растерянности. То ли людей я не понял, то ль я сам ... То есть, попытка запустить и "поредактировать" окончилась сокрушительным фиаско. И если версию с графическим интерфейсом еще можно было кое-как использовать благодаря иконкам и меню, то текстовая версия просто повергала меня в полное уныние. Прошло некоторое время, и я нашел краткий справочник на русском языке по использованию Vi (прародителя VIM). Почитал и понял, что эта программа не для нормального человека, а исключительно для маньяков. Сейчас мне смешно вспоминать - справочник занимал неполных четыре страницы крупным шрифтом! Я решил, что по доброй воле я больше не вернусь к этому редактору. Изменить своему решению меня заставили два обстоятельства: первое - я хотел иметь под Linux и Windows один редактор; второе - меня мучило чувство собственной неполноценности, люди, мол пользуются и довольны - нахвалиться не могут, а я даже сохранить документ толком не смог, о каких-то манипуляциях с текстом я вообще молчу! Я решительно взялся за документацию, которая поставляется вместе с VIM. Вот тут меня ждал сюрприз - объем этой документации. Он поистине необъятный. То есть посидеть вечерок - разобраться в принципе невозможно! Последняя моя попытка произошла совершенно случайно - нечем было заняться, и я решил распечатать и внимательно прочитать руководство по VIM. Потратив день на чтение и эксперименты, я понял, что им можно таки редактировать текст!!! С того времени прошел год, и я, практически, пользуюсь только этим редактором. Должен признать, что он достоин того, чтобы потратить время на его изучение. Скажу честно, что каждый раз, когда я заглядываю в документацию, то нахожу новые полезные функции и возможности. В чем же заключается проблема, которая мешала мне сразу освоить этот редактор? Проблемы две - одна заключена во мне, а вторая заключается в том, что VIM принципиально отличается по своей идеологии от "традиционных" редакторов. Я глубоко уважаю и высказываю свое почтение людям, которые самостоятельно его освоили и используют, значительно увеличив свою личную производительность, а тем, кому это не удалось, но и желание не пропало, я рекомендую ознакомиться с этим документом. Я искренне желаю вам успеха в освоении этого замечательного редактора и постараюсь помочь, дав базовые знания и весь арсенал, необходимый для начала полноценной работы. Авторские праваАвторские права принадлежат Яловому Илье Викторовичу © 2003. Этот документ может распространятся и изменяться в соответствии с требованиями GNU General Public License. Копия GPL доступна по адресу http://www.gnu.org/copyleft/gpl.html 1. ДостоинстваПрежде всего, отмечу, что этот редактор отвечает всем требованиям, перечисленным ранее. Спорными можно назвать только его размер и скорость работы. Не пугайтесь! Занимает он вполне приемлемо и достаточно быстро работает. Но, честно говоря, эти параметры находятся очень близко от грани. Aditor занимает раза в 3 меньше и намного быстрее. Но я перестал беспокоиться по этому поводу, когда посмотрел файлы конфигурации подсветки синтаксиса! VIM - работает с синтаксисом значительно серьезнее, да и вообще когда начинаешь понимать его реальную мощь, то отпадают всякие сомнения. Чтобы в полной мере оценить этот редактор с ним надо поработать. И именно здесь закопана собака! Чтобы в полной мере оценить этот редактор с ним надо поработать ПРОФЕССИОНАЛЬНО. Тем не менее, постараюсь кратко сформулировать основные положительные аспекты:
Перечислять можно долго, но оценить вы это сможете, только СЕРЬЕЗНО пощупав собственными руками. 2. Основные принципы работыКак я уже говорил, работать с VIM можно, только понимая его идеологию. Чем же он отличается от "обычных" редакторов? Далее постараюсь быть лаконичным и исключить лирику для лучшего восприятия материала - уж очень это серьезное дело. Текстовый редактор VIM может находиться в одном из трех состояний (В скобках указаны оригинальные английские названия):
Существуют еще режим совместимый с VI - он нас не интересует, и режим выделения текста эмулирующий поведение обычных редакторов под Windows - Select, но при этом мы теряем больше, чем находим, и я его рассматривать не буду. Рассмотрим подробнее каждое состояние редактора. Каждое состояние соответствует определенному режиму работы, предназначенному для выполнения определенных операций. - NORMAL: В этом режиме выполняются различные команды, такие как чтение-запись файлов, изменение параметров редактора и др. - INSERT: В этом режиме осуществляется вставка текста и непосредственное редактирование. - VISUAL: В этом режиме можно выделять текст для последующих манипуляций, таких как удаление, перемещение по листу, копирование в один из регистров изменение форматирования и др. Имея три основных режима работы, мы должны оперативно между ними переключаться. Основным режимом принято считать режим NORMAL. Поэтому все переходы осуществляются через него.
Далее я буду рассматривать как выполняются те операции, к которым мы привыкли, используя "традиционный" ТР с графическим интерфейсом (если кто помнит, то были строчные и экранные редакторы, так вот VIM, на мой взгляд, ближе к строчным). VIM имеет множество команд типа "удалить 10 слов от текущего положения курсора" или "перейти на 4 слова влево". Глупо говорить, что такие команды не нужны, просто современный рядовой пользователь не привык к таким командам - его орудие мышка. И вот как раз такому человеку будет интересно (надеюсь) прочитать далее, как можно выполнять привычные для него действия в таком своеобразном редакторе. 3. Чтение файла, сохранение, выход из программыИтак, самые главные операции, которые необходимы любому ТР. Общая идея заключается в том, что VIM имеет некий набор буферов и экранов. Буфер - это собственно файл (не совсем корректно, но в первом приближении сойдет), а экран это то окно, в котором отображается буфер. Все операции по работе с файлами, буферами и экранами осуществляются из режима NORMAL. :edit - чтение файла и большинство вариаций на эту тему осуществляется с помощью этой команды. Общий формат команды имеет вид (здесь и далее в квадратные скобки заключаются необязательные элементы): :e[dit][!] [++opt] [+cmd] [Имя файла] где
Вопрос работы с различными русскими кодировками рассмотрен подробнее в соответствующем разделе. Возможные варианты сохранения файла показаны в таблице:
Вопрос работы с различными русскими кодировками рассмотрен подробнее в соответствующем разделе. :q[uit] - обеспечивает выход из программы. Если один из открытых файлов был изменен и не сохранен, то для выхода из программы необходимо использовать :q! или предварительно сохранить все файлы. 4. Навигация по текстуДля эффективного редактирования текста мы должны иметь возможность перемещаться по нему в любом направлении и к любому его фрагменту. VIM имеет для этого потрясающие и очень разноплановые возможности. Начнем с простого. для перемещения курсора традиционно используются следующие клавиши (только режим NORMAL): 'h' - влево, 'j' - вниз, 'k' - вверх, 'l' - вправо. Такой подход обеспечивает максимальную скорость, для людей владеющих "слепой печатью", так как избавляет их от необходимости убирать руки от основной клавиатуры. Для людей владеющих "однопальцевой печатью" в последних версиях VIM добавлена возможность перемещения по файлу с помощью традиционных клавиш как в режиме NORMAL, так и в режиме INSERT. Но такие манипуляции далеко не предел возможностей VIM. Далее привожу сводную таблицу соответствующих команд. Надо заметить, что VIM поддерживает технологию подобную гиперссылкам.
Очень полезными могут оказаться именованные метки, особенно, когда приходится вносить изменения в нескольких частях одного документа. Для работы с именованными метками используются следующие команды:
Кроме определяемых пользователем, имеются также предопределенные метки:
5. РедактированиеПод редактированием я понимаю различные манипуляции над текстом и его форматированием. Соответственно для каждого из режима доступны различные команды. В режиме VISUAL осуществляются изменения выделенного участка текста. В режиме NORMAL в качестве обьекта редактирования выступает текущая строка, слово или символ. Корректура собственно текста осуществляется непосредственно в режиме INSERT, в котором вы можите добавлять новые символы, удалять или заменять старые. Естественно, и ввод текста осуществляется в этом режиме.
Особый интерес представляет дополнительный режим, в который можно перейти из режима INSERT, нажав комбинацию клавиш <CTRL> + X. Чтобы выполнить требуемое действие вам необходимо выбрать одну из следующих комбинаций:
Особое внимание заслуживает комманда <CTRL> + T. Она представляет собой поиск в словаре. Рассмотрим пример использования этой команды. Допустим файл словаря содержит следующую строку: великолепный замечательный прекрасный отличный превосходный Если вы наберете великол и нажмете комбинацию <CTRL> + T, то будет вставлено слово великолепный. Последующие нажатия этой комбинации будут вставлять следующие слова соответственно: замечательный, прекрасный, отличный, превосходный. Способов применения этой команды может быть множество, от подбора синонимов до организации удобной работы со словарём (при переводе). |