
Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.
Ви збираєтеся створити файл crontab
і несподівано опиняєтеся в цьому дивному редакторові за умовчанням. У тому, в якому все ніяк не розберетеся.
ESC? Нічого не сталося. CTRL + C? Ні. ESC ESC ESC? Неа. Ви у безвиході.
Ну ось, знову. Схиливши голову від сорому, Ви запускаєте черговий термінал, щоб виконати команду killall vim
і продовжити займатися своїми справами.
З Вами бувало таке? Звичайно, бувало. Що ж, витративши декілька хвилин на цю статтю, Ви ознайомитеся із засадами редактора Vim (і навчитеся швидко виходити з нього).
Vim за умовчанням встановлений у багатьох операційних системах (включаючи більшість дистрибутивів Linux і macOS), тому хоча б поверхневі знання про нього зайвими не будуть. Відкрийте термінал і введіть vim
.
В умілих руках Vim може стати потужніше за багато IDE. І, зрозуміло, він не їсть сотні мегабайтів пам’яті лише для відображення порожнього файлу (так, Eclipse, це про тебе).
Засади
Деякі з команд, описаних нижче, розпочинаються з двокрапки: після її натискання, з’явиться підказка, в якій буде вказана повна команда. Команди без двокрапки – це “гарячі” клавіші, які можна використати в режимі за умовчанням (у ньому запускається Vim). Команди, написані ВЕЛИКИМИ ЛІТЕРАМИ – це окремі клавіші: наприклад, ESC – це клавіша Esc на Вашій клавіатурі.
Усі команди чутливі до регістру і повинні виконуватися поза режимом insert.
Вихід з Vim
Вихід без збереження змін:
:q!
Як запам’ятати: quit dammit! (закрийся, чорт тебе бери!)
Вихід зі збереженням змін:
:wq
Як запам’ятати: write to disk and quit?
Навігація
Для переміщення по відкритому файлу використайте стрілки.
Переміщення на рядок 285:
:285
Пошук слова “import” :
/import
Зміна тексту
Вставка тексту там, де стоїть курсор:
i
Як запам’ятати: insert?
Вставка тексту наприкінці поточного рядка:
A
Як запам’ятати: Append?
Вихід з режиму редагування (повернення в стандартний режим):
ESC
Виділення тексту
Перехід у візуальний режим:
v
Як запам’ятати: visual?
Для виділення тексту використайте стрілки.
Вихід з візуального режиму:
ESC
Копіювання, видалення, вставка
Копіювання виділеного тексту у буфер:
y
Як запам’ятати: yank?
Видалення виділеного тексту:
d
Як запам’ятати: delete
Копіювання поточного рядка у буфер:
yy
Як запам’ятати: yank yank?
Копіювання трьох рядків, включаючи поточний, у буфер:
3yy
Видалення поточного рядка і переміщення його у буфер:
dd
Як запам’ятати: delete delete?
Видалення 5 рядків, включаючи поточний:
5dd
Вставка з буфера перед поточним рядком:
P
Примітка: заголовна P
Вставка з буфера після поточного рядка:
p
Відміна і відновлення останньої зміни
Відміна останньої зміни:
u
Як запам’ятати uh-oh?
Відновлення останньої скасованої зміни:
CTRL + R
Виведення змін:
:undolist
Відміна двох останніх змін:
2u
Багаторівневе дерево відкату змін Vim дуже потужне, детальніше про нього можна почитати у документації.
Робота з файлом
Відкриття файлу index.html замість поточного:
:edit index.html
Збереження поточного файлу:
:w
Як запам’ятати: write to disk?
Збереження файлу зі зміненим ім’ям, наприклад, changes.txt:
:w changes.txt
Пошук і заміна
Пошук і заміна всіх входжень рядка у файлі:
:%s/typo/corrected/g
Пошук і заміна із запитом підтвердження заміни:
:%s/typo/corrected/gc
Как запам’ятати: confirm
Підсвічування синтаксису і відступи
Включення підсвічування синтаксису:
:syntax on
Включення автоматичних відступів:
:set autoindent
Збільшення відступів декількох рядків при виділенні їх у візуальному режимі:
>
Вкладки
Відкриття server.py у новій вкладці:
:tabe server.py
Як запам’ятати: tab edit?
Перехід на вкладку праворуч:
:tabn
Як запам’ятати: tab next?
Перехід на попередню вкладку ліворуч:
:tabp
Як запам’ятати: tab previous?
Для закриття вкладки переключіться на неї і використайте команду :q
чи :wq
.
Розділений екран
Відкриття templates/base.html у режимі вертикального розділення екрана:
:vs templates/base.html
Як запам’ятати: vertical split?
Відкриття shared.js у режимі горизонтального розділення екрана:
:sp shared.js
Як запам’ятати: the ‘default’ horizontal split?
Переміщення між “частинами” екрана:
CTRL + W + ARROW KEYS
Для закриття екрана перемкніться на нього і використайте команду :q
чи :wq
.
Налаштування Vim: файл .vimrc
Багато команд, використовуваних для зміни виду і поведінки Vim, можна зробити включеними за умовчанням, помістивши їх в .vimrc – файл конфігурації Vim, який розташований в домашньому каталозі.
Наприклад, додавання цих рядків в ~/.vimrc
зробіть підсвічування синтаксису і автоматичне коригування відступів включеним за умовчанням:
syntax onset autoindent
Ідеї для кастомізації Vim можна запозичити в цьому GitHub-репозиторії.
Корисні ресурси
Ось ще декілька корисних матеріалів для вивчення Vim:
- 12 просунутих команд Vim;
- Кращі команди з офіційної вікі-сторінки проекту;
- Величезна підбірка команд.
А яка команда Vim – Ваша улюблена? Може, Ви знаєте зручні прийоми? Поділіться ними в коментарях!
Переклад статті “How the hell do I exit: A beginner’s guide to Vim”
Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?