Файловый редактор Vim

Теоретическая часть

0. Начало работы в Vim

Vim - мощный текстовый редактор с полной свободой настройки и автоматизации.

В Vim имеется несколько «режимов работы», переключение между ними приводит к изменению функционала клавиатурных клавиш. При таком подходе клавиатура используется и для ввода символов, и для перемещения по тексту. Это удобно для переключения между редактированием и просмотром кода.

В каждом руководстве по Vim рекомендуется начинать изучать этот текстовый редактор с vimtutor.

Vim имеет 4 режима работы:

  1. Обычный режим - в нем любая набранная буква воспринимается как команда (при открытии файла по умолчанию).
  2. Командный режим или режим “последней строки” - чтобы из обычного режима попасть в командный режим, необходимо набрать знак “:”, в этом режиме можно вводить более “продвинутые” команды, которые позволяют открывать другие файлы и выполнять команды из shell, bash. Чтобы вернуться в обычный режим нажмите 2 раза на Esc.
  3. Режим вставки или редактирования - для перехода в режим редактирования наберите команду “i” (сокр. от insert) в обычном режиме. Также можно использовать клавишу 'Insert', если она у вас есть на клавиатуре. В данном режиме можно печатать и удалять текст. Для возврата в обычный режим нажмите на Esc.
  4. Режим выделения текста (визуальный) - для входа в визуальный режим наберите команду "v" (сокр. от visual) или "V", находясь в обычном режиме. Для возврата в обычный режим нажмите 2 раза на Esc.

Для того чтобы создать или открыть файл Vim, введите в командную строку:

vim <filename>

В самом файле можно указать путь к python3 или bash, если нужно написать программу.

Чтобы разрешить запуск программы, нужно написать:

chmod +x <filename>

Перемещение по файлу осуществляется с помощью букв HJKL или стрелок.

1. Базовые команды Vim

Команда Описание
vimtutor выполняется из терминала. Представляет собой встроенный краткий курс по vim
:help справка
. повтор последней команды
u, U откат действий
Ctrl + R отмена отката действий
ZZ сохранить документ и выйти из Vim
ZQ выйти без сохранения
:q закрыть файл
:wq сохранить и закрыть файл
:!q закрыть файл без сохранения изменений
:w сохранить изменения
:w <newfilename> сохранить изменения в новый файл
:sp <файл> открывает новый файл в текущем терминале, текущий файл при этом остается открытым.
Ctrl + W переключение между открытыми файлами одного терминала.

2. Просмотр содержимого файла и поиск

Команда Описание
:set number включить нумерацию строк
номер_строки + Ctrl + G переход на указанную строку
:номер строки переход на указанную строку
Ctrl + u, Ctrl + d прокрутка области просмотра вверх или вниз на полстраницы
/ поиск по файлу
/искомое_слово поиск слова вперед от текущей позиции
?искомое_слово поиск слов назад от текущей позиции
n продолжение поиска
N возврат к предыдущему найденному слову

3. Перемещение по тексту

Команда Описание
w переход на одно слово вперед
2w переход на 2 слова вперед. Цифра указывает на сколько слов необходимо перейти.
b переход на одно слово назад
2b переход на 2 слова назад
gg переход в начало файла
G переход в конец файла
0 переход в начало строки
$ переход в конец строки

4. Копирование и вставка. Редактирование

Команда Описание
yw скопировать слово
y копирование в буфер обмена
p вставка из буфера обмена после текущего символа
P вставка до текущего символа
:<i>,<j>s/что_заменяем/на_что/ замена с i по j строку (только первого вхождения)
:<i>,<j>s/что_заменяем/на_что/g замена всех вхождений
i переход в режим вставки с текущей позиции
a переход в режим вставки после курсора
I перемещение в начало строки и переход в режим вставки
A перемещение конец строки и переход в режим вставки
v, V переход в визуальный режим (выделяет текст с текущего места)
Ctrl + v выделение блоком
~ переключение регистра (верхний/нижний) текущего или выделенного символа
x, Delete посимвольное удаление
<число>x удаляет указанное число символов начиная с того который находится под курсором
dd построчное удаление
ciw (Change Inside Word) удаление текущего слова и автоматический переход в режим вставки
C удалить текст от позиции курсора до конца строки и перейти в режим вставки
dt<char> (Delete To <character>) удалить текст от позиции курсора до следующего вхождения указанного символа
r <буква> (символ) заменяет букву в тексте под курсором на указанную букву
d$ удаление строки, начиная от текущей позиции и до конца строки
dd удаление всей строки
d2w удаление 2-х первых слов, то есть удаление вперед от текущей позиции
d2b удаление 2-х последних слов, то есть удаление назад от текущей позиции

Практическая часть

Примеры

Один из неочевидных способов работы с vim - редактирование файлов без непосредственного открытия редактора.

Например, можно осуществить замену символа в файле через терминал. Например, чтобы заменить последний символ в файле n.sh на символ b, следует выполнить в терминале:

vim n.sh  <<< rbZZ

Аналогично можно осуществлять более сложные операции. Например, скопировать слово из файла и записать его в другой файл. Это возможно, так как vim имеет собственный внешний буфер обмена. Скопируем 1 строчку из файла n.sh и вставим ее последней строкой в файл m.sh:

vim n.sh  <<< 0yy:wq
vim m.sh <<< p:wq

Задачи

  1. Создайте файл на bash. Напишите любую программу, сохраните ее, выйдите из vim и запустите.
  2. Создайте файл co строкой "AAAAAA". Преобразуйте ее в строку "ABABABABABAB" не используя режим вставки.
  3. Откройте файл. Скопируйте строки с 3-й по 5-ю и вставьте в конце текста.
  4. Создайте файл со строкой 'MIPT'. Не открывая vim, скопируйте 'MIPT' из этого файла в другой ранее созданный файл. Также не открывая vim, отредактируйте эту строку 'MIPT' -> 'МФТИ'. Не забудьте сохранять файлы