Основные возможности

Все возможности и команды редактора ViM перечислить весьма затруднительно (ибо HTML-документация по нему занимает около пяти мегабайт), но на группе наиболее (на мой взгляд) полезных остановиться необходимо. Перечисленные ниже команды вводятся в основном режиме (если нет специального уточнения). Все они имеют команднострочные аналоги и могут быть легко переопределены вами...

переходы
 -- Для перехода на строку с номером n, воспользуйтесь командой G. Так, для перехода к началу текста набирайте 0G, для сотой строки 100G, а для конца -- $G. Для перехода на n символов в нужную вам сторону можете использовать клавиши со стрелками. То есть для перехода на 1000 символов вниз наберите 1000 и нажмите стрелку вниз.

Для перемещения по тексту используйте следующие команды: ``(,)'' для перемещения по предложениям, ``{,}'' для параграфов, ``[[,]]'' для функций, ``%'' -- переход к парной скобке, ````'' -- к предыдущему положению, а ``<CTRL>-O, <CTRL>-I'' -- соответственно назад и вперед по истории переходов...

метки
 -- Используются для отметки позиции (mметка, где меткой является любая буква) и быстрого к ней перехода (`метка). Метки нижнего регистра действительны в пределах данного файла, метки же верхнего регистра действуют во всех открытых файлах. Список всех меток можно получить командой marks.

регистры
 -- Конечно же вам доступно множество именованных регистров (хранилищ данных, буферов). Регистр отмечается ``"буква''. К нему применимы все стандартные действия -- копирование в него ("меткаy), вырезание ("меткаd), и вставка из него ("меткаp, можете вместо p использовать [p,]p для вставки соответственно перед, или после курсора). В режиме редактирования вставка из регистра осуществляется по ``<Ctrl>+R метка''. Для добавления данных в регистр используйте заглавную метку.

Также вы можете писать в регистр, воспользовавшись командой ``qметка'' и завершая запись по ``q''. Таким образом вы сохраняете макрос, выполнить который можно по ``@метка''.

Регистры с метками ``*'' и ``+'' совпадают с X-Window clipboards, ``%'' -- соответствует редактируемому файлу. Для просмотра содержимого всех регистров воспользуйтесь командой :registers, либо :reg метка1метка2... для просмотра некоторых...

фолды
 -- предназначены для сокрытия не нужных в данный момент данных, дабы те не отвлекали внимания. Например, кода подпрограммы с которой вы в данный момент не работаете. По умолчанию фолды активированы в режиме их ручной расстановки. Если вы хотите их автоактивации по отношению к табуляции, то добавьте в конфиг строку set foldmethod=indent. Все команды для работы с фолдами начинаются с ``z''. Открытие фолда производится, например, по zo (или стрелке вправо) на нем, закрытие кода в фолд -- по zc...

сессии
 -- при ведении группы проектов нередко желательно сохранить текущее состояния и настройки редактора, дабы в дальнейшем продолжить работу с того же места. Для этого и предназначены сессии, что создаются командой :mksession /path/to/Session.vim, а читаются простой командой :so /path/to/Session.vim. Гораздо чаще, впрочем, возникает нужда в сохранении не всей сессии, но только текущего контекста (в что входит, например, положение курсора в коде, текущая расстановка фолдов и много другое, о чем читайте в документации). Это действие выполняет команда :mkview, чтение -- :loadview. Очень удобно сделать сохранение и чтение контекста автоматическим при начале и окончании редактирования файла. У меня это реализовано следующим кодом (применяется для всех файлов, имеющих точку в имени): au BufWinLeave *.* mkview au BufWinEnter *.* silent loadview

поиск и замена
 -- Поиск осуществляется командами ``/'' для поиска (по регулярному выражению) вперед, а ``?'' в обратном направлении. Для продолжения поиска используйте ``n'', а для прошлого варианта ``N''. Для поиска слова под курсором используются соответственно ``#'' и ``*''.

Для поиска с заменой используйте :%s/что/на что/gic, где ``%'' означает работу со всем текстом (а не с текущей строкой) ``g'' -- глобальная замена (а не первое совпадение), ``i'' -- игнорирование регистра, а ``c'' -- подтверждение каждого действия.

автодополнение
 -- Производится по содержимому данного файла, а также угазанных в переменной dictionary по нажатию клавиш ``
отмена
 -- ``u'' для отмены и ``
смена регистра
 -- ``~'' для выделенного участка (или буквы под курсором). ``U'' -- принудительно установить верхний регистр, а ``u'' соответственно нижний.

повторить
 -- ``.''.

Copyleft © 2002-2003 г.   Nikolay A. Panov, "Intro To Linux" (orig),  niksite@mail.ru,  ICQ: 122-40-8888