Работай с текстом без проблем!

Докучаев Дмитрий aka Forb

Xakep, номер #060, стр. 060-082-3


Настало время поговорить о более серьезных вещах. Мощным средством консольного редактирования является Vim. На самом деле, заголовок немного утрирован. Vim можно освоить за несколько часов и уже без проблем работать в этом чудо-эдиторе. Но не стоит забывать, что об этом редакторе написано множество книг и руководств. Суди сам о его обширных возможностях. Vim - улучшенная версия vi - редактора, который уже давно поставляется во всех Linux-дистрибутивах. Уникальность его в том, что это средство редактирования по умолчанию запускается для изменения системных файлов (например, его порождают команды vipw, crontab и др.), так как по умолчанию находится в системной переменной $EDITOR. Не зная горячих клавиш, работать в vim практически невозможно. Так уж построен этот эдитор - для входа в определенный режим необходимо ввести нужную комбинацию.

Навигация

Для начала поговорим о навигации по тексту. Она очень удобна, поскольку осуществляется клавишами g,h,j и k. Как утверждают разработчики, эти клавиши использовать намного проще, чем курсорные стрелки. Лично я сейчас юзаю именно такую раскладку и уже практически привык к ней. Надеюсь, что тебе она тоже покажется удобной.

Режимы редактора

У Vim существуют режимы вставки, замены и простого просмотра документа. Для перехода в режим вставки (самый распространенный), достаточно нажать клавишу ESC и i. После этого в нижней строке будет написано слово "INSERT". Теперь можно вставлять любые символы в позицию, где находится курсор.

Чтобы перейти в режим замены, нужно нажать кнопку "r" и ввести заменяющий символ. Он заменит тот, который находится под курсором. Для выхода из режима нажми ESC. Для того чтобы удалить символ или ряд символов, не обязательно входить в режим вставки. Достаточно просто встать на нужный символ и нажать "x". После этого он исчезнет.

Безопасное удаление

В Vim существуют специальные клавиши, позволяющие легко удалять символ, слово либо всю строку. Это комбинации клавиш (набираем последовательно) "dl", "dw" и "dd". Кроме того, существует возможность повторного удаления за одну команду. Для этого необходимо задать, сколько раз будет выполняться команда, а лишь затем указать ее формат. Например, комбинация "3dw" удалит три слова, идущих подряд. Человеку свойственно ошибаться, поэтому если ты удалил лишнее слово, не переживай. Разработчики Vim создали режим отката команд, который очень полезен для пользователя. При нажатии на клавишу "u" происходит откат последней команды, а "U" отменяет все изменения в текущей строке. Таким образом, для возвращения строки в исходное состояние, достаточно нажать shift+u. Для отмены отката нужно выполнить комбинацию Ctrl+u.

Ищите и обрящете

В эдиторе существует мощная система поиска, в корне отличающая Vim от других редакторов. Дело в том, что он позволяет использовать регулярные выражения. Если ты знаком с программированием, ты меня поймешь. Например, для того чтобы найти строку, начинающуюся со слова hack без учета регистра, достаточно набрать "/^hack/i" (без кавычек). Кроме того, возможна быстрая замена одного слова на другое в текущей строке. Рассмотрим пример: надо заменить "hack" на "fuck" :). Для этого помещаем курсор на начало нужной строки и пишем ":s/hack/fuck/g" (флаг g означает глобальную замену). После нажатия Enter задача завершится. Чтобы заменить сочетания во всем файле, нужно перед символом "s" поставить знак %. Вообще, процент помогает найти парную круглую или квадратную скобку. Это бывает очень полезно при отладке программного кода. Помимо текстовых и поисковых горячих клавиш, Vim также имеет полезные комбинации, позволяющие определить текущую строку либо размер файла. Так, например, сочетание ctrl+g позволяет определить текущую позицию в файле (строку, размер и процент). Рассказать обо всех возможностях Vim в этой статье нереально. Поэтому, если хочешь узнать больше - команда man vim для тебя ;). Там ты найдешь абсолютно все горячие клавиши и опции этой замечательной среды редактирования.

Назад на стр. 060-082-2  Содержание  Вперед на стр. 060-082-4