← Назад к обзору

Основы редактирования

Грамматика редактирования

Модель редактирования Neovim часто описывается как язык с грамматикой:

[число] + оператор + перемещение/текстовый_объект

Эта композируемость — ключ к мощности Neovim.

Операторы

ОператорДействие
dDelete (удалить, также вырезает в регистр)
yYank (копировать в регистр)
cChange (удалить и войти в режим вставки)
>Увеличить отступ
<Уменьшить отступ
=Автоотступ
gUВерхний регистр
guНижний регистр

Текстовые объекты

Текстовые объекты определяют область текста. Работают с любым оператором.

Текстовый объектЗначение
iwInner word (слово внутри)
awA 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 строки
diwDelete inner word (слово под курсором)
dapУдалить абзац
ci"Change inner "..." (изменить текст внутри кавычек)
yi{Yank inner {...} (скопировать содержимое фигурных скобок)
gUiwСделать слово заглавными
>ipДобавить отступ абзацу

Другие важные клавиши редактирования

КлавишаДействие
xУдалить символ под курсором
XУдалить символ перед курсором
pPaste (вставить после курсора)
PВставить перед курсором
uUndo (отменить)
Ctrl-rRedo (повторить)
.Повторить последнее изменение
~Переключить регистр символа
JJoin (объединить текущую строку со следующей)
r{символ}Replace (заменить символ под курсором)

Команда точка

Команда . — одна из самых важных клавиш в Neovim. Она повторяет последнее изменение. В сочетании с поиском (n) это позволяет очень эффективно выполнять повторяющиеся правки:

  1. /foo — найти «foo»
  2. cgnbar<Esc> — заменить совпадение на «bar»
  3. n — перейти к следующему совпадению
  4. . — повторить замену
  5. Повторять шаги 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" (границы слова)