← blog

Точка — лучшая команда в Vim

2026-07-173 min readAdvanced
#операторы#основы

Если забрать из Vim ровно одну команду и больше не учить ничего — берите ., точку.

Она повторяет последнее изменение. Это вся функция. Звучит как пустяк, и при этом это главный разрыв между людьми, которые знают команды Vim, и людьми, которые реально быстрые.

Как это выглядит

Допустим, есть такой код, и foo нужно превратить в bar в восьми местах:

const foo = init();
run(foo);
log(foo.id);

Ставите курсор на первое foo и набираете ciw — изменить внутреннее слово. Печатаете bar, жмёте Escape. Это первая правка, сделанная обычным способом.

Теперь переходите к следующему foo и нажимаете ..

Всё. Vim повторяет правку целиком: удалить слово, напечатать bar, вернуться в обычный режим. Одно нажатие. Переход, точка, переход, точка. Восемь замен примерно за двенадцать нажатий — и вы ни разу не повторились.

А почему не поиск с заменой?

Можно. :%s/foo/bar/g сделает все восемь разом, и иногда это правильный инструмент.

Но неправильный он чаще, чем принято признавать, потому что он слепой. Он попадёт в foo внутри foobar. Попадёт в foo в комментарии, который трогать не хотели, и в тот единственный строковый литерал, который должен остаться. Значит, добавляете /gc, чтобы подтверждать каждое, — и вот вы отвечаете y/n и вчитываетесь в регулярку, написанную по памяти.

Точка работает наоборот: вы смотрите, потом решаете, потом жмёте одну клавишу. Вы видите каждое место до изменения, а пропущенные не стоят ничего — просто не нажимаете точку.

На трёх вхождениях замена — избыточна. На восьми точка обычно быстрее по секундомеру, потому что вы не пишете паттерн. На восьмидесяти берите замену: для этого она и есть.

Правило, из-за которого точка работает

Вот чего вам не говорят — и почему новичкам точка кажется ненадёжной.

Точка повторяет ОДНО изменение. Значит, делайте правки цельными самодостаточными фразами.

Плохо: встать перед словом, пять раз нажать x, чтобы удалить foo, напечатать bar. Точка повторит только последний x. Ваша правка была не одним изменением, а шестью, и точка понятия не имеет, что вы имели в виду.

Хорошо: ciw, потом bar. Одна команда, одно изменение, полностью описанное. Точка повторит его идеально.

Поэтому ciw и . всегда учат вместе, и поэтому совет «выучи текстовые объекты» окупается дважды. Объекты делают правки атомарными, а атомарные правки — это то, что точка умеет повторять.

То же с удалением. Не жмите x одиннадцать раз — так вы отдаёте точке один символ. Берите dw, d$, di(. Одна фраза, одно изменение, повторяемо.

Точка плюс поиск

Теперь соедините её с n.

Ищете /foo, жмёте Enter — вы на первом совпадении. Делаете ciw, печатаете bar, Escape. Жмёте n — следующее совпадение. Жмёте ..

Дальше цикл — это просто n . n .: два нажатия на замену, и вы видите каждую до того, как согласиться. Это самое близкое к фокусу, что есть в Vim, — и при этом честная часть ежедневной работы.

Почему она лучшая

Повтор есть во многих редакторах. У вашего наверняка тоже что-то висит на «повторить последнее действие». Оно повторяет нажатие или пункт меню.

Точка другая, потому что изменения в Vim — это фразы, и точка повторяет смысл, а не движения. ciw не воспроизводит «удалить четыре символа» — она воспроизводит «изменить слово, на котором я сейчас стою», а это в каждом месте разные символы. Команда подстраивается под то, где вы находитесь.

Именно поэтому она сочетается с перемещением. Идите куда угодно — точка, идите ещё куда-то — точка. Правка следует за вами.

Учить сразу после текстовых объектов

Точка бесполезна, пока правки не атомарны, а атомарные правки — это текстовые объекты. Отсюда порядок: сначала ciw, потом точка. Вдвоём они и есть большая часть того, что называют «быстро работать в Vim».

Эта ката учит связку: одно изменение, потом точка, прямо в браузере. Норма — шесть нажатий. Попробуйте попасть.