Файловый редактор Vim
Содержание
Теоретическая часть
0. Начало работы в Vim
Vim - мощный текстовый редактор с полной свободой настройки и автоматизации.
В Vim имеется несколько «режимов работы», переключение между ними приводит к изменению функционала клавиатурных клавиш. При таком подходе клавиатура используется и для ввода символов, и для перемещения по тексту. Это удобно для переключения между редактированием и просмотром кода.
В каждом руководстве по Vim рекомендуется начинать изучать этот текстовый редактор с vimtutor.
Vim имеет 4 режима работы:
- Обычный режим - в нем любая набранная буква воспринимается как команда (при открытии файла по умолчанию).
- Командный режим или режим “последней строки” - чтобы из обычного режима попасть в командный режим, необходимо набрать знак “:”, в этом режиме можно вводить более “продвинутые” команды, которые позволяют открывать другие файлы и выполнять команды из shell, bash. Чтобы вернуться в обычный режим нажмите 2 раза на Esc.
- Режим вставки или редактирования - для перехода в режим редактирования наберите команду “i” (сокр. от insert) в обычном режиме. Также можно использовать клавишу 'Insert', если она у вас есть на клавиатуре. В данном режиме можно печатать и удалять текст. Для возврата в обычный режим нажмите на Esc.
- Режим выделения текста (визуальный) - для входа в визуальный режим наберите команду "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
Задачи
- Создайте файл на bash. Напишите любую программу, сохраните ее, выйдите из vim и запустите.
- Создайте файл co строкой "AAAAAA". Преобразуйте ее в строку "ABABABABABAB" не используя режим вставки.
- Откройте файл. Скопируйте строки с 3-й по 5-ю и вставьте в конце текста.
- Создайте файл со строкой 'MIPT'. Не открывая vim, скопируйте 'MIPT' из этого файла в другой ранее созданный файл. Также не открывая vim, отредактируйте эту строку 'MIPT' -> 'МФТИ'. Не забудьте сохранять файлы