Редактирование файлов в редакторе vim

Запуск редактора и режимы работы

Запуск редактора осуществляется командой

vim [имя файла]
например, vim main.cpp. В редакторе vim существует два режима: режим редактирования и режим команд. В режиме редактирования нажатие клавиш на клавиатуре приводит к отображению соответствующих символов в файле. В режиме команд нажатие на клавиши приводит к выполнению команд редактора, которые связаны с соответствующими символами. При запуске редактор находится в режиме команд.

Переход из режима редактирования в режим команд осуществляется путем нажатия Esc.

Ниже приведены основные команды редактора (вводятся в режиме команд). Команды, которые начинаются с ":" или "/", заканчиваются Enter.

на соответствующую закрывающую (открывающую) скобку, с учетом их вложенности.
КомандаОписание
:wЗаписать файл (write) (сохранение).
:w имяЗаписать содержимое буфера редактирования в файл с именем имя (сохранить как).
:qВыход (quit). Если файл был изменен, то будет напечатано сообщение.
:wqВыход с сохранением (write quit).
:q!Выход без сохранения.
i(insert) Переход в режим редактирования.
oВставить пустую строку после текущей и перейти в режим редактирования.
OВставить пустую строку перед текущей и перейти в режим редактирования.
ddУдалить текущую строку. Может использоваться с числовым префиксом. 5dd – удалить 5 строк. Удаленные строки записываются в буфер обмена (см. ниже).
nGn - число. Переход на строчку с номером n. Например, 12G.
GПереход в конец файла.
%Если курсор находтся на открывающей (закрывающей) скобке, то он переходит
/строкаПоиск в файле строки строка.
:%s/старый/новый/gЗаменить все вхождения старый на новый.
u(undo) Отменить последнюю операцию. Может выполняться несколько раз подряд. 5u отменяет последние 5 действий.
:redoПовторно выполнить действие, которое было отменено командой undo.
Копирование и вставка
yyСкопировать текущую строку в буфер обмена. 10yy скопирует 10 строк, включая текущую.
p(строчная p). Вставить содержимое буфера обмена после курсора.
P(заглавная P). Вставить содержимое буфера обмена перед курсором.
vПерейти в визуальный режим выделения. Область выделяется стрелками.
yСкопировать выделенную область в буфер обмена. p и P вставляют выделенный фрагмент.

Комбинации команд могут быть достаточно удобными. Например, команда <Esc>ddp меняет местами две строчки. <Esc> гарантирует, что мы находимся в режиме команд.

Редактирование исходных текстов программ в редакторе vim

Редактор vim предоставляет множество функций и команд, полезных при редактировании исходных текстов программ. Существует возможность подклчения модулей расширения (плагинов), что позволяет делать удивительные вещи. В этом разделе описаны самые простые возможности, которые тем не менее могут существенно упростить процесс написания программы.

Настройка редактора для написания программ на Си

Настройка редактора производится изменением файла .vimrc (имя файла начинается с символа точки), который находится в домашней директории. Это обычный тектовый файл, который можно редактировать с помощью редактоа vim, выполнив команду vim ~/.vimrc. Настройку файла .vimrc достаточно выполнить один раз, но нужно понимать, что эти настройки действуют только для того пользователя, кто их внес (у каждого пользоватля системы свой собственный файл настроек).

Автоматическая расстановка отступов

Если вы хотите, чтобы редактор автоматически расставлял отступы в соответсвии с требованиями к оформлению программ, то в файл .vimrc нужно добавить строчки

set cindent shiftwidth=4
set softtabstop=4
set expandtab

autocmd FileType make setlocal noexpandtab

При редактировании файлов с расширением .c (программа на языке Си) или .cpp (программа на Си++) при нажатии на Enter курсор будет автоматически ставится в нужный столбец. Отступ блока составляет shiftwidth позиций. Символы табуляции будут заменяться на пробелы (файл будет выглядеть "красиво" на любом компьютере). Команда autocmd ... означает, что при редактировании Makefile табуляция не будет заменяться пробелами, так как для этого файла символ табуляции имеет специальное значение.

Компиляция

Если вы используете Makefile для компиляции своей программы, то вы можете запускать компиляцию не выходя из редактора. Более того, vim анализирует результат компиляции и, если при компиляции возникли синтаксические ошибки, переходит к строке файла, который содержит первую ошибку.

Для запуска команды операционной системы make достаточно в редакторе выполнить команду :make. Для перехода к следующей ошибке нужно ввести команду :cnext. Для удобства, можно поместить в файл .vimrc следующие две строчки.

map <F5> :w <CR> :make <CR>
map <F3> :cnext <CR>
Они означают, что при нажатии клавиши F5 будет выполнена команда :w (сохранить изменения в текущем файле) и команда :make. Нажатие F3 позволит перейти к следующей найденной ошибке,

Полезные команды

Действие Команда Описание
Просмотр страницы справки K Если курсор находится над именем стандартной функции (например, printf), то нажатие Shift+k откроет страницу справки.
Форматирование отсупов в файле gg=G Расставляет во всем файле отсупы в соответствии с правилами форматирования программы на Си.
Поиск слова под курсором # Эквивалентно ?слово, где слово – это слово под курсором. n переходит к следующему вхождению, N – к следующему вхождению в обратном порядке поиска.
Переход на строчку по номеру nG Переходит на строчку с заданным номером. Например, 121G переходит на 121-ю строчку файла.
Установка метки в файле ma Помечает (mark) текущую позицию в файле меткой a. Можно использовать имена меток от a до z.
Перейти на метку с именем `a (обратный апостроф a) Переходит на строчку, ранее помеченную меткой с именем a.


Немного шуток про vim для посвященных.