Редактирование в Vim

Vim — это не «редактор с горячими клавишами», это язык, на котором с текстом разговаривают напрямую, без посредников-кнопок и без графических нянеек. Мышь пылится в ящике между зарядкой и забытым флеш-накопителем, а я третий час сижу над чужим текстом и ни разу её не тронул. Каждая команда здесь устроена как опкод: один-два символа наружу, а за ними целая семантика, выверенная десятилетиями. Мы работаем быстро не потому, что ускоряем пальцы, а потому, что перестаём о них думать. Ниже — грамматика: сначала простые глаголы, потом те, что пишутся в несколько руках и живут до автоматизма.

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

Сменить регистр слов и предложений

Регистр — это тот же бит в байте: перевёл его — и слово из шёпота стало криком. Дёшево и зло: целая строка переворачивается одним жестом, без диалогов, без модалок, без подтверждения.

  • gUU - поменять регистр на верхний для всей строки
  • gUw - поменять регистр на верхний 'test' => 'TEST'
  • guw - поменять регистр на нижний для слова
  • ~ - переключить регистр символа под курсором
  • VU - перевести выделенную строку в верхний регистр
  • Vu - перевести выделенную строку в нижний регистр

Вставка текста

Точка входа обязана быть явной — в дизассемблере ты всегда знаешь, куда прыгает instruction pointer, и здесь то же самое: шесть способов сказать «начни писать именно здесь».

  • i — перейти в режим вставки перед курсором.
  • I — перейти в режим вставки в начале текущей строки.
  • a — перейти в режим вставки после курсора.
  • A — перейти в режим вставки в конце текущей строки.
  • o — открыть новую строку ниже текущей и перейти в режим вставки.
  • O — открыть новую строку выше текущей и перейти в режим вставки.

Удаление текста

Удаление здесь — не «стереть», а вырезать кусок потока и молча положить его в регистр. Ничего не пропадает: то, что ты снёс, ещё лежит в памяти и ждёт.

  • x — удалить символ под курсором.
  • X — удалить символ перед курсором.
  • dw — удалить слово.
  • dd — удалить текущую строку.
  • D — удалить все символы от курсора до конца строки.

Изменение текста

Замена — это удаление с немедленным исполнением, один цикл вместо двух. Мелочь, а экономит секунды, а секунды — это и есть вся жизнь, разложенная по кадрам.

  • r — заменить символ под курсором.
  • cw — изменить слово.
  • cc — изменить текущую строку.
  • C — изменить все символы от курсора до конца строки.

Видео «delete-and-change» не найдено (урок не готов или slug неверный).

Копирование и вставка

Yank — старое слово, но оно точнее любого «скопировать». Копируешь не в абстрактный буфер обмена, а в конкретный регистр, с именем и адресацией.

  • y — копировать (yank) текст.
  • yy — копировать текущую строку.
  • yw — копировать слово.
  • p — вставить текст после курсора.
  • P — вставить текст перед курсором.

Отмена и повтор

Отмена устроена как стек: u делает возврат, Ctrl-R вытаскивает обратно то, что ты уже похоронил. А . вообще отдельная песня — повтор последней команды, и это самый честный способ автоматизации, какой только существует: ты один раз сделал руками, а машина повторит столько раз, сколько скажешь.

  • u — отменить последнее изменение.
  • Ctrl-R — повторить отмененное действие.
  • . — повторить последнюю команду.

Видео «dot-repeat» не найдено (урок не готов или slug неверный).

Продвинутые команды редактирования

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

Замена текста

:%s — как греп с обратным ходом: нашёл, заменил, не спросив. Жёсткий инструмент, зато без иллюзий.

  • :%s/old/new/g — заменить все вхождения old на new в файле.
  • :s/old/new/g — заменить все вхождения old на new в текущей строке.
  • :s/old/new/gc — заменить все вхождения с подтверждением.

Регистры

Тридцать с лишним именованных ячеек памяти прямо в редакторе. Пока остальные восторгаются буфером обмена, ты работаешь с адресацией, как в ассемблере.

  • "ay — копировать текст в регистр a.
  • "ap — вставить текст из регистра a.
  • "aP — вставить текст из регистра a перед курсором.

Макросы

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

  • q<register> — начать запись макроса в указанный регистр.
  • q — остановить запись макроса.
  • @<register> — воспроизвести макрос из указанного регистра.
  • @@ — воспроизвести последний макрос.

Автоисправление

Модные фреймворки обещают тебе интеллект на триста мегабайт. Vim предлагает три строчки, которые правят опечатки до того, как ты их сделал.

:abbr Lunix Linux
:abbr accross across
:abbr hte the

Визуальный режим

Мышь не нужна и здесь: выделение — это диапазон, а диапазон потом принимает любую команду.

  • v — войти в визуальный режим.
  • V — войти в визуальный режим строк.
  • Ctrl-V — войти в визуальный блоковый режим.
  • d — удалить выделенный текст.
  • y — копировать выделенный текст.
  • > — сместить выделенный текст вправо.
  • < — сместить выделенный текст влево.

Работа с буфером и окнами

Буфер — это файл в памяти, окно — взгляд на него. Держать эти два понятия раздельными учат ещё в школе, но корпоративные IDE почему-то нет.

  • :e filename — открыть файл.
  • :w — сохранить файл.
  • :q — закрыть файл.
  • :wq — сохранить и закрыть файл.
  • :bd — закрыть текущий буфер.
  • :split — разделить окно по горизонтали.
  • :vsplit — разделить окно по вертикали.
  • Ctrl-W + w — переключиться между окнами.

Возможно использовать '*' для перехода к следующему вхождению слова под курсором

Дополнительно

  • J - объединить текущую строку со следующей

Видео «join-lines» не найдено (урок не готов или slug неверный).

Заключение

Все эти команды — не «повышение продуктивности», а способ держать руки на рычагах, а не на мышке. Текст упрямый материал, и тот, кто умеет резать его регистрами, а не тащить курсором по буквам, выигрывает не в скорости, а в характере. Освоив сначала грубые жесты, а потом и тонкие, ты обнаружишь неприятную вещь: обратно к перетаскиванию блоков мышью уже не тянет. Это и есть хардкор — не ради спорта, а потому что старая машина честнее новой обёртки.

Полезные ресурсы

  • Vim Tutor — интерактивное руководство по Vim.
  • Vimcasts — видеоуроки по использованию Vim.
  • Vim документация — официальная документация Vim.

Прочитай их не спеша и проверь каждую команду руками — и текст начнёт слушаться тебя, а не наоборот.