← На главную

Vim умеет рисовать ASCII-арт без плагинов

20.07.2026 18:42 · hackernews

Для создания ASCII-арта можно обойтись без плагинов — в Vim уже есть всё необходимое. Главная фишка — :set virtualedit=all. После этого курсор свободно ходит за конец строки, и Vim сам добивает пробелы при вставке. Без этой опции пришлось бы заполнять буфер вручную, но и тут Vim помогает: 42i<space><esc> вставит 42 пробела, а yy5p скопирует строку пять раз.

Многострочная вставка делается через Visual block mode (Ctrl+v). Выделяешь столбец на нескольких строках, жмёшь Shift+i, печатаешь нужные символы — после выхода в Normal mode они появляются на каждой строке. Так, например, за несколько нажатий можно добавить волны позади кота-няни.

Очистить прямоугольную область внутри рамки — выдели её в Visual block и нажми r + пробел. Если нажать d, строки удалятся, а рамка съедется — не всегда то, что нужно.

Копировать и вставлять прямоугольные куски тоже можно в Visual block: y — скопировать, p или P — вставить. При обычной вставке блок «вдвигается», сдвигая соседние символы. Чтобы вставить поверх без сдвига, используй 1vP1v создаёт выделение с размерами последней визуальной операции, а P удаляет выделенное и вставляет поверх, не затирая буфер обмена.

Макросы (q<регистр>, последовательность команд, q, потом @<регистр>) пригодятся для повторяющихся действий, например, диагонального тайлинга плитки. В статье показан макрос, который копирует блок, вставляет поверху и перемещает курсор в следующий угол. Но автор признаёт, что для ASCII-арта макросы нужны редко — проще сделать вручную, чем отлаживать запись.

Включи поддержку мыши (:set mouse=a) — кликай в любом месте окна Vim, даже в терминале. Если потерял пробелы, :set list покажет $ в конце строк. Кастомизировать отображение можно через listchars.

В конце статьи цитата Джоан Г. Старк: для ASCII-арта нужен только текстовый редактор с моноширинным шрифтом. Никакие трюки не заменят желания рисовать.

Читать оригинал →