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

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

переходы
 -- Для перехода на строку с номером n, воспользуйтесь командой G. Так, для перехода к началу текста набирайте 1G (или gg), для сотой строки 100G, а для конца -- $G (или просто G). Также можете использовать процентный переход. Для середины файла, например, 50%. Для перемещения по видимому участку экрана -- ``H'', ``M'', ``L''. ``<Ctrl>+F'' и ``<Ctrl>+B'' перемещают видимую область на экран, ``<Ctrl>+U'' и ``<Ctrl>+D'' на пол-экрана, ``<Ctrl>+E'' и ``<Ctrl>+Y'' на одну строку. Команда ``zz'' перемещает видимую область так, чтобы текущая строка оказалась в середине, соответственно используются ``zt'' и ``zb''. Для перехода на n символов в нужную вам сторону можете использовать клавиши со стрелками. То есть для перехода на 1000 символов вниз наберите 1000 и нажмите стрелку вниз.

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

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

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

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

Регистры с метками ``*'' и ``+'' совпадают с X-Window clipboards (первый с ``current selection'', куда попадает выделенный мышью текст, а второй с ``real clipboard'', куда текст попадает в результате операции копирования), ``%'' -- соответствует редактируемому файлу.

В режиме редактирования вставка из регистра осуществляется по ``<Ctrl>+r регистр''.

Для просмотра содержимого всех регистров воспользуйтесь командой :registers, либо :reg метка1метка2... для просмотра некоторых...

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

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

Очень удобно сделать сохранение и чтение контекста автоматическим при начале и окончании редактирования файла. У меня это реализовано следующим кодом (применяется для всех файлов, имеющих точку в имени):

  au  BufWinLeave *.* mkview
  au  BufWinEnter *.* silent loadview

восстановление
 -- иногда случается страшное. Отключают электричество (а UPS мы, наученные горьким опытом, еще не купили), виснет операционка из-за проблем с железом... А мы как раз набирали в ViMСамый Главный Файл и утратили уже инстинкт автосохранения (вот он главный вред надежности OS Linux :o)... Что делать? Не паниковать. Если вы сохраняли файл непосредственно перед крахом и данные были сброшены на диск, то средством восстановления данных можно и не пользоваться. Но вот если файл давно не сохранялся, то дело другое. ViMсоздавался исходя из реальных потребностей его пользователей (а не рассуждений менеджеров о target-аудитории и её потребностях) и конечно же и на этот случай вам постарается помочь. При открытии файла после краха (если в это время от был открыт) ViM, после соответствующего вам вопроса (``а был ли крах?''), попытается восстановить файл в наиболее актуальном виде. Это не означает, что будут восстановлены все ваши исправления файла с последнего сохранения. Это дало бы слишком большую нагрузку на компьютер, если коммитить каждый символ. Оные изменения ViMсбрасывает на диск каждые updatetime миллисекунд (по умолчанию 4000) и каждые updatecount символов (по умолчанию 200). Соответственно рекомендуется сохранить восстановленный файл под другим именем и пройтись по оригинальному и восстановленному программой vimdiff. Не забудьте после всех этих манипуляций удалить swap-файл ViM`а.

шифрование
 -- не всегда мы хотим сделать свои творения всеобщим достоянием, для этого используется криптование файловой системы, каталогов, файлов... ViMи в этом вам может помочь. При создании нового файла запускайте ViMс ключем -x, либо используйте команду :X для уже существующего файла. Снять защиту можно просто аннулировав ключ: :set key=.

сплиты
 -- иногда бывает полезно работать одновременно с несколькими частами редактируемого файла. Для этого воспользуйтесь командой :split (либо ``<Ctrl>+w s'') для горизонтального разделения, или :vsplit (либо ``<Ctrl>+w v'') для вертикального. Переключаться между окнами можно мышью, либо по ``<Ctrl>+w w''. Дополнительные окна можно закрыть командой :close (либо ``<Ctrl>+w c''). Создать новое окно -- :new и :vnew (либо ``<Ctrl>+w n''). Оставить текущее окно в гордом одиночестве -- :only (либо ``<Ctrl>+w o'').

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

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

Также возможен поиск строк с применением к ним команды. К примеру, команда ``:g+//+s/foobar/barfoo/g'' меняет ``foobar'' на ``barfoo'' во всех комментариях вида ``//''.

Кроме того любой участок текста (к примеру, выделенный) можно пропустить через внешнюю программу. Так, например, командой ``:'<,'>|sort'' выделенный фрагмент сортируется.

автодополнение
 -- Производится по содержимому данного файла, а также угазанных в переменной dictionary по нажатию клавиш ``<Ctrl>+n'' и ``<Ctrl>+p''.

отмена
 -- ``u'' для отмены и ``<Ctrl>+R'' для отмены отмены...

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

перемещение текста
 -- команды ``<'' и ``>'' смещают выделенный текст на shiftwidth пробелов в соответствующую сторону.

вставка файла
 -- осуществляется по команде ``:кудаread файл'', где ``куда'' обозначает номер строки, куда осуществлять вставку, либо опускается при ставке в текущую строку. Совершенно аналогично осуществляется вставка результата работы команды. К примеру, команда ``:read !date вставляет текущую дату...

повторить
 -- ``.'' последнюю команду правки текста, ``;'' и ``,'' последний поиск (командами ``f'',``F'',``t'',``T'').

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



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости