Содержание
1. Режимы Vim
Vim поддерживает несколько режимов работы. Это означает что действие клавиш и их комбинаций различается в зависимости от того в каком режиме вы сейчас находитесь
Командный режим
Режим по умолчанию. Из него осуществляется переход в другие режимы и выполнение команд.
Клавиша перехода - ESC.
Все команды из разделов 2 - 10 выполняются из этого режима.
Режим ввода
Клавиши перехода:
- i - ввод с текущего символа
- a - ввод со следующего символа
- o - ввод со следующей строки
Режим выделения
Клавиша перехода - v.
Режим замены
Клавиша перехода - R.
2. Работа с файлами и сессиями
:mksession - создать файл сессии (в файл Session.vim сохраняется информация о настройках и всех открытых файлах и буферах);
source Session.vim - загрузить файл сессии (все настройки и открытые в прошлый раз окна восстанавливаются);
:eFILE - открывает FILE на редактирование;
:w\[FILE] - записывает сделанные изменения в открытый файл или FILE, если он указан;
:q - выход из vim. При :q! выход без записи сделанных изменений;
РЕМАРКА: - можно смешивать несколько команд в одну. Например - :wq!
3. Перемещение
влево / вниз / вверх / вправо h /j /k /l
РЕМАРКА: Удобство в том, что при такой раскладке пальцы всегда лежат на большинстве нужных клавишь и не нужно перемещать руку от букв к клавишам стрелок.
^ - в начало строки;
$ - в конец строки;
w - в начало следующего слова;
b - в начало предыдущего;
{NUM}gg - переход на {NUM} строку;
G - переход в конец файла.
4. Отмена действий
u - отменяет предыдущее действие. Может применяться несколько раз. Аналог комбинации ctrl + z;
ctrl + r отмена отмены предыдущего действия. Аналог комбинации ctrl + shift + z.
5. Поиск
/{regex} - поиск регулярного выражения {regex} в текущем файле от курсора к концу файла;
/{regex} - поиск регулярного выражения {regex} в текущем файле от курсора к началу файла;
n - найти следующее слово;
N - найти предыдущее слово;
f{letter} или F{letter} - перемещает курсор на следующую (или предыдущую если F) букву {letter} в текущей строке;
t{letter} или T{letter} - перемещает курсор за один символ до следующей (или предыдущей если T) буквы {letter} в текущей строке;
6. Редактирование
{NUM}dd - удаление {NUM} строк;
{NUM}cc - аналог dd, но после удаления переворит редактор в режим ввода;
{NUM}yy копирование {NUM} строк в буфер обмена;
p - вставка из буфера обмена в текущую позицию курсора;
x - удаление символа под курсором.
7. Пара слов о коммандном режиме
Можно относиться к командам vim как к предложениям.
Есть глаголы (например f, d, g) есть существительные (например w, буквы, числа).
Примеры составления предложений:
- Delete till find 'b' (удалить всё до символа 'b') - dtfb
- Mark from there to 22 line (выделить всё с текущего символа до 22 строки) - vg22g
8. Вызов внешних команд
:!cmd - вызывает shell команду cmd для обработки переданных данных. Если данных не передано показывает вывод команды на экран.
Пример:
:!ls - показывает файлы в текущей директории
:%wc -w - считает количество слов в файле
Делаем vim hex редактором:
%!xxd - конвертирует файл в хекс представление
%!xxd -r - конвертирует обратно
9. Прочие полезные команды
:E - Открывает меню выбора файла;
:setlocal - показывает текущие локальные переменные
10. Путешествие по тегам
Файл тегов можно создать с помощью команды
%NF ctags -R . %NE
WRITEMELATER
11. Файл настроек vimrc
При запуске редактор считывает настройки, сохранённые в файле ~/.vimrc. Те же команды можно установить для текущей сессии vim в командном режиме после двоеточния (Пример: :set nu)
Для установки опций используется ключевое слово set, причём если мы хотим отключить опцию то перед её именем мы пишем no
Пример:
set nu - включает нумерацию строк vim;
set nonu - выключает нумерацию;
set hls - highlight search, подсвечивает искомые слова
set ic - ignore case, игнорирует регистр букв при поиске
syntax on - включает подсветку синтаксиса