Основы редактирования
Грамматика редактирования
Модель редактирования Neovim часто описывается как язык с грамматикой:
[число] + оператор + перемещение/текстовый_объект
Эта композируемость — ключ к мощности Neovim.
Операторы
| Оператор | Действие |
|---|---|
d | Delete (удалить, также вырезает в регистр) |
y | Yank (копировать в регистр) |
c | Change (удалить и войти в режим вставки) |
> | Увеличить отступ |
< | Уменьшить отступ |
= | Автоотступ |
gU | Верхний регистр |
gu | Нижний регистр |
Текстовые объекты
Текстовые объекты определяют область текста. Работают с любым оператором.
| Текстовый объект | Значение |
|---|---|
iw | Inner word (слово внутри) |
aw | A word (слово с окружающими пробелами) |
i" | Внутри двойных кавычек |
a" | Двойные кавычки (включая кавычки) |
i' | Внутри одинарных кавычек |
i( или i) | Внутри круглых скобок |
a( или a) | Круглые скобки (включая скобки) |
i{ или i} | Внутри фигурных скобок |
i[ или i] | Внутри квадратных скобок |
it | Внутри тега XML/HTML |
at | Тег XML/HTML (включая теги) |
ip | Внутри абзаца |
ap | Абзац (включая пустую строку) |
is | Внутри предложения |
as | Предложение |
Примеры комбинирования
| Команда | Что делает |
|---|---|
dw | Удалить до конца слова |
d$ | Удалить до конца строки |
dd | Удалить всю строку |
3dd | Удалить 3 строки |
diw | Delete inner word (слово под курсором) |
dap | Удалить абзац |
ci" | Change inner "..." (изменить текст внутри кавычек) |
yi{ | Yank inner {...} (скопировать содержимое фигурных скобок) |
gUiw | Сделать слово заглавными |
>ip | Добавить отступ абзацу |
Другие важные клавиши редактирования
| Клавиша | Действие |
|---|---|
x | Удалить символ под курсором |
X | Удалить символ перед курсором |
p | Paste (вставить после курсора) |
P | Вставить перед курсором |
u | Undo (отменить) |
Ctrl-r | Redo (повторить) |
. | Повторить последнее изменение |
~ | Переключить регистр символа |
J | Join (объединить текущую строку со следующей) |
r{символ} | Replace (заменить символ под курсором) |
Команда точка
Команда . — одна из самых важных клавиш в Neovim. Она повторяет последнее изменение. В сочетании с поиском (n) это позволяет очень эффективно выполнять повторяющиеся правки:
/foo— найти «foo»cgnbar<Esc>— заменить совпадение на «bar»n— перейти к следующему совпадению.— повторить замену- Повторять шаги 3–4 по мере необходимости.
Поиск и замена
Базовый поиск
/шаблон " Поиск вперёд
?шаблон " Поиск назад
n " Следующее совпадение
N " Предыдущее совпадение
* " Поиск слова под курсором (вперёд)
# " Поиск слова под курсором (назад)
Настройки поиска
:set ignorecase " Поиск без учёта регистра
:set smartcase " С учётом регистра, если в шаблоне есть заглавные
:set hlsearch " Подсвечивать все совпадения
:set incsearch " Показывать совпадения по мере ввода
:nohlsearch " Временно убрать подсветку (сокращение: :noh)
Команда substitute (поиск и замена)
:s/старое/новое/ " Заменить первое вхождение в текущей строке
:s/старое/новое/g " Заменить все вхождения в текущей строке
:%s/старое/новое/g " Заменить все вхождения во всём файле
:%s/старое/новое/gc " Заменить все с подтверждением
:5,10s/старое/новое/g " Заменить на строках 5–10
Полезные шаблоны
:%s/\s\+$// " Удалить концевые пробелы
:%s/\n\{3,}/\r\r/g " Схлопнуть множественные пустые строки в одну
:%s/\<foo\>/bar/g " Заменить только целое слово "foo" (границы слова)