Эргономика и антипаттерны: как не навредить себе и не застрять

Рейтинг: 56.5% · 9 голосов
Исчерпывающий курс по Vim и Neovim: модальное редактирование и грамматика (операторы, движения, текстовые объекты, точка-команда), регистры, метки, макросы, поиск и :substitute, :global, буферы/окна/quickfix, визуальный режим, конфигурация на Lua, маппинги, плагины (lazy.nvim), LSP, автодополнение (blink.cmp), Treesitter, fuzzy-поиск, Git, эргономика и антипаттерны. 34 главы, актуально на 2026 (Vim 9.1, Neovim 0.11/0.12).
Ответить
Аватара пользователя
Roman_Vim
Сообщения: 34
Зарегистрирован: 11 май 2026, 05:31

Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение Roman_Vim »

Оглавление курса (34)
  1. Философия Vim: модальное редактирование и почему это актуально в 2026
  2. Установка и выживание: первый запуск, режимы, как выйти
  3. Перемещение по тексту: движения как основа эффективности
  4. Базовое редактирование: вставка, удаление, копирование
  5. Грамматика Vim: операторы + движения = команды
  6. Текстовые объекты: оперируем структурой, а не символами
  7. Точка-команда и повторяемость: "один штрих, чтобы повторить"
  8. Регистры: продвинутая работа с буфером обмена
  9. Метки и прыжки: навигация по истории перемещений
  10. Поиск: /, ?, *, # и магия паттернов
  11. Замена :substitute и регулярные выражения Vim
  12. Команда :global - оружие массового редактирования
  13. Буферы, окна и вкладки: организация рабочего пространства
  14. Quickfix и location list: пакетная работа по всему проекту
  15. Навигация по файлам: netrw, fuzzy-поиск и проекты
  16. Макросы: автоматизация повторяющихся правок
  17. Визуальный режим и блочное редактирование
  18. Трюки режима вставки
  19. Свёртки, автодополнение и аббревиатуры (встроенные)
  20. Конфигурация с нуля: init.lua и разумные дефолты 2026
  21. Маппинги: leader, which-key и здравые привычки
  22. Скриптинг: основы Vimscript и Lua для Neovim
  23. Менеджеры плагинов: lazy.nvim и lazy-loading
  24. Neovim в 2026: чем отличается и почему выбирают
  25. LSP в Neovim: умные возможности языка
  26. Автодополнение 2026: blink.cmp против nvim-cmp
  27. Treesitter: точная подсветка и структурное редактирование
  28. Fuzzy-поиск: Telescope, fzf-lua и snacks.picker
  29. Git внутри редактора: fugitive, gitsigns и lazygit
  30. Дистрибутивы, отладка и терминал: быстрый старт и интеграции
  31. Vim повсюду: IDE, браузер и shell
  32. Эргономика и антипаттерны: как не навредить себе и не застрять (вы здесь)
  33. Рабочие рецепты, тренажёры и план обучения
  34. Шпаргалка-справочник: все ключевые команды одним списком
Часть VII. Мастерство
Vim умеет сделать вас быстрее. Но та же интенсивность работы с клавиатурой, которая даёт скорость, способна навредить - если вы сидите криво, держите запястья под углом и часами не отрываетесь от экрана. И ещё одна ловушка подстерегает в самом редакторе: можно годами "пользоваться Vim", так и не научившись им пользоваться. Стрелочки вместо движений, зажатый j вместо прыжка, ручное выделение вместо текстовых объектов - всё это работает, но держит вас на уровне "текстовый редактор с модальным режимом" вместо "инструмент-усилитель".

Эта глава - про две вещи, которые редко обсуждают на старте, хотя именно они определяют, останетесь ли вы в Vim надолго и с пользой: эргономика (как не сломать себе руки и спину) и антипаттерны (как не закрепить вредные привычки, которые потом придётся переучивать). Закрепляющие практики и тренажёры - в главе 33, а полный справочник команд - в главе 34.

Зачем об этом думать отдельно

Скорость в Vim - это не "быстро нажимать", а "нажимать мало и осмысленно". Если вы печатаете правильную команду один раз вместо того, чтобы двадцать раз тыкать стрелку, вы экономите не только время, но и количество движений пальцами - а значит, снижаете механическую нагрузку. Эргономика и хорошие привычки редактирования - это две стороны одной медали: грамотный мышечный навык бережёт и время, и сухожилия.

Поэтому глава устроена так: сначала разберёмся с физикой (тело, руки, клавиатура), потом - с привычками (что вы делаете внутри редактора и как переучиться).

Часть 1. Эргономика и профилактика RSI

RSI (repetitive strain injury, травма от повторяющейся нагрузки) - собирательное название для проблем вроде туннельного синдрома, тендинита и общего перенапряжения кистей и предплечий. Программист - группа риска по определению: тысячи нажатий в день, статичная поза, мышь.

Хорошая новость: модальное редактирование само по себе работает на вас. Когда большая часть навигации и правок идёт с домашнего ряда клавиатуры, вы резко сокращаете обращения к мыши - по разным оценкам, до ~70% меньше кликов. Меньше дотягиваний до мыши - меньше отведений плеча и нагрузки на запястье. Но это лишь фундамент; на нём всё ещё можно сидеть неправильно.

Положение тела и рук

Базовые ориентиры, которые стоит держать в голове:

Код: Выделить всё

Зона        |  Как должно быть                                                            |  Почему
------------+-----------------------------------------------------------------------------+--------------------------------------------------------------
Запястья    |  Нейтрально, примерно 0° разгиба - не задраны вверх и не провалены вниз     |  Разгиб запястья сдавливает срединный нерв в запястном канале
Локти       |  Угол ~90-100°, предплечья примерно параллельны полу                        |  Снимает нагрузку с плеч и трапеций
Клавиатура  |  Центрирована так, чтобы домашний ряд (зона hjkl) был прямо перед корпусом  |  Убирает скручивание корпуса и боковое отведение кистей
Плечи       |  Расслаблены, не подняты                                                    |  Хроническое напряжение трапеций - частый спутник RSI
Экран       |  Верхняя треть на уровне глаз                                               |  Чтобы не наклонять шею вниз
Отдельный приём для пользователей выносного лотка для клавиатуры: расположите лоток так, чтобы домашний ряд оказался по центру тела, а не клавиатура целиком. Numpad смещает буквенный блок влево, и центрирование "по корпусу клавиатуры" уводит кисти вбок.

Перемаппинг Caps Lock - самый недооценённый апгрейд

Caps Lock - это огромная клавиша под левым мизинцем, которую в работе вы используете примерно никогда. А Esc, наоборот, нужен в Vim постоянно для выхода из режима вставки, и тянуться к нему в дальний верхний угол - это и неудобно, и нагружает кисть.

Решение: переназначить Caps Lock. Два популярных варианта:
  • Caps Lock -> Ctrl (а лучше - "двойная роль": коротко нажал - Esc, держишь - Ctrl). Это снимает нагрузку с мизинца, который иначе тянется к Ctrl в нижнем углу.
  • Caps Lock -> Esc - самый прямой выигрыш для Vim.
Важно: это делается на уровне ОС, а не в конфиге Vim, потому что вы хотите эффект во всей системе.
  • macOS: "Системные настройки -> Клавиатура -> Модификаторные клавиши" - назначить Caps Lock на Escape или Control. Для двойной роли - утилита вроде Karabiner-Elements.
  • Linux (X11): setxkbmap -option caps:escape (или caps:ctrl_modifier). Для двойной роли - xcape либо демон interception-tools (caps2esc).
  • Linux (Wayland): через keyd или штатные опции окружения.
  • Windows: через реестр (Scancode Map) или PowerToys -> Keyboard Manager.
Альтернатива, о которой полезно знать: вместо Esc можно использовать Ctrl-[ - это буквально тот же скан-код, что и Esc, но прямо на домашнем ряду. Многие предпочитают именно его и вообще не тянутся к Esc. Комбо jk/jj для выхода из вставки тоже работает, но у него есть подвох с задержкой - см. главу 21 и раздел "Частые ошибки" ниже.
Раскладки и "тяжёлые" клавиши

Vim проектировался под QWERTY, и большинство мнемоник (hjkl, w, b, e) к ней привязаны. Если вы используете Dvorak/Colemak/Workman, готовьтесь либо переучивать часть мувментов, либо ремапить - это осознанный компромисс, а не "само заработает".

Отдельная боль - нерусская/русская раскладка. Если вы переключились на кириллицу и забыли вернуться, нормальный режим Vim превращается в набор бессмысленных символов. Лечится либо дисциплиной, либо настройкой keymap / langmap в Vim, чтобы команды нормального режима работали и в русской раскладке (тема для самостоятельного изучения через :help langmap).

Если вы много печатаете и серьёзно относитесь к RSI - присмотритесь к сплит- и орто-клавиатурам (Dygma, ZSA Moonlander, Keychron Q-серии с раскладкой и т.п.). Они позволяют развести руки на ширину плеч (нейтральное положение предплечий) и часто имеют удобные большие клавиши под большой палец - куда логично вешать Esc/слой/модификаторы.

Перерывы - не роскошь, а профилактика

Самая дешёвая и самая игнорируемая мера. Микропаузы по 20-30 секунд каждые 10-25 минут заметно снижают накопление нагрузки: по отдельным исследованиям, они заметно уменьшают компрессию срединного нерва и нагрузку на сухожилия-сгибатели. Встаньте, отпустите кисти, потрясите ими, сведите лопатки.

Полезное правило для глаз - 20-20-20: каждые 20 минут смотрите 20 секунд на объект в ~20 футах (6 метрах). И не забывайте просто вставать: статичная поза вредит не меньше, чем повторяющиеся движения.

Поставьте напоминалку (таймер Pomodoro, утилиты вроде Stretchly/Workrave). Сила воли тут не работает - работает внешний сигнал.

Часть 2. Антипаттерны редактирования

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

Антипаттерн №1: стрелки вместо движений

Стрелки Up Down <- -> уводят правую руку с домашнего ряда в дальний угол клавиатуры. Каждое такое дотягивание - потеря позиции пальцев и лишняя нагрузка. К тому же стрелками вы двигаетесь только по одному символу/строке.

Лечение радикальное: отключите стрелки в нормальном режиме, чтобы рука физически не могла за них спрятаться.

Код: Выделить всё

nnoremap <Up>    <Nop>
nnoremap <Down>  <Nop>
nnoremap <Left>  <Nop>
nnoremap <Right> <Nop>
Первое время будет больно - это и есть смысл. Через неделю-другую hjkl и нормальные движения станут автоматическими.

Близкий по духу радикальный приём - против привычки тянуться к мыши. По умолчанию Neovim включает мышь во всех режимах (mouse=nvi), и рука по старой памяти нет-нет да и уходит к ней для клика/выделения. Если хотите отучиться - выключите мышь полностью:

Код: Выделить всё

set mouse=
Пустое значение отключает обработку мыши, и клик в окне больше не двигает курсор и не выделяет - придётся перемещаться движениями. Это тот же принцип, что и с <Nop> на стрелках: убрать "костыль", чтобы мозг искал правильный путь. (В Vim мышь по умолчанию выключена; set mouse= там просто закрепляет это.)

Антипаттерн №2: спам hjkl вместо слов и поиска

Перейти со стрелок на hjkl - только половина дела. 8j нажатый как jjjjjjjj, или путешествие по слову через llllll - это тот же антипаттерн, просто на домашнем ряду. hjkl - это "последняя миля", точная доводка курсора на 1-3 позиции, а не основной транспорт.

Чем заменять перемещение внутри строки и по тексту:

Код: Выделить всё

Хочу                            |  Антипаттерн   |  Правильно
--------------------------------+----------------+-------------------------------
На следующее слово              |  lllll         |  w / W
К концу слова                   |  lll           |  e
К конкретному символу в строке  |  lllllll       |  f<char> / t<char>, повтор ; ,
К началу/концу строки           |  hhhh/llll     |  0 / ^ / $
К известному тексту             |  долистывание  |  /текст<CR>, n/N
К слову под курсором по файлу   |  -             |  * / #
Подробно про движения - глава 3, про поиск - глава 10.

Антипаттерн №3: hjkl на дальние дистанции

Прыжок на 30 строк вниз через j (даже с count 30j, если вы его не посчитали навскидку) - медленно. Для дальних перемещений есть специализированные инструменты:

Код: Выделить всё

Дистанция                 |  Инструмент
--------------------------+-------------------------------------------------
Несколько строк           |  <count>j / <count>k с включённым relativenumber
По абзацам/блокам         |  { и }
Полэкрана                 |  Ctrl-d / Ctrl-u
Целый экран               |  Ctrl-f / Ctrl-b
Верх/середина/низ экрана  |  H / M / L
В начало/конец файла      |  gg / G
К строке N                |  :N<CR> или <N>G
Ключевой приём - relativenumber. Включите :set number relativenumber, и слева у каждой строки будет видно расстояние до курсора. Нужно к строке, помеченной 8 ниже? Нажимаете 8j - и вы там, без счёта в уме.

Код: Выделить всё

было: курсор на строке "func main() {"
       номера слева показывают: целевая строка помечена как "5" вниз
нажимаем: 5j
стало: курсор ровно на нужной строке, один прыжок вместо пяти
Антипаттерн №4: отказ от counts

Count (число перед командой) - это множитель, который превращает одну команду в N. 3dd удалит три строки, 5w прыгнет на пять слов вперёд. Counts перемножаются: 3d2w эквивалентно d6w.
Отдельно про count с текстовыми объектами скобок: сам i(/a( и без count работает "из произвольной точки" - он находит ближайшую охватывающую пару скобок. А count перед ним увеличивает уровень вложенности наружу: 2i( берёт не ближайшую пару, а ту, что на один уровень выше (3i( - на два уровня и т.д.). То есть count здесь - это "насколько наружу", а не "поиск ближайших скобок".
Игнорировать counts - значит дробить одно действие на повторы. Сравните:

Код: Выделить всё

Удалить 4 строки.
антипаттерн: dd dd dd dd   (или j dd, j dd ...)
правильно:   4dd

Код: Выделить всё

Сдвинуть курсор на 12 слов.
антипаттерн: w w w w w w w w w w w w
правильно:   12w
Если вы пишете собственные мапы, которые читают count, помните разницу: v:count возвращает реальный 0 при отсутствии счётчика, а v:count1 - единицу. Для "однократного по умолчанию" берите v:count1, иначе мап без count выполнит нулевое (сломанное) действие. Подробнее про скриптинг - глава 22.
Антипаттерн №5: ручное выделение вместо текстовых объектов

Это, пожалуй, самый дорогой антипаттерн. Привычка из обычных редакторов - "выделить мышкой/Shift, потом удалить" - переносится в Vim как v + куча движений. Но Vim умеет оперировать структурой: словом, скобками, кавычками, абзацем, тегом.

Грамматика "оператор + текстовый объект" (d/c/y/gU + iw/i(/a"/ip/it) работает из любой точки объекта и прекрасно дружит с . (точка-повтор). Это курсор-независимо: ci( поменяет содержимое скобок, где бы внутри них вы ни стояли.

Код: Выделить всё

Поменять содержимое строки в кавычках.
текст:  greet("hello world")
курсор: где угодно внутри кавычек
антипаттерн: найти начало -> v -> доехать до конца -> d -> напечатать
правильно:   ci"  -> сразу печатаешь новое  ("inner quotes")

Код: Выделить всё

Удалить аргументы вызова вместе со скобками.
текст:  do_thing(a, b, c)
правильно: da(   ("around parens" - убирает и скобки)
Базовый набор объектов (полнее - глава 6):

Код: Выделить всё

Объект          |  i (внутри)  |  a (вокруг)
----------------+--------------+------------
Слово           |  iw          |  aw
Кавычки         |  i" i'  i    |  a" a'  a
Скобки          |  i( i[ i{    |  a( a[ a{
Тег (HTML/XML)  |  it          |  at
Абзац           |  ip          |  ap
И ещё: текстовые объекты лучше "голых" движений (dw, d$) ещё и потому, что они предсказуемо повторяются точкой. dw зависит от позиции курсора в слове, а diw - нет.
На современном Neovim 2026 арсенал объектов расширяют плагины: mini.ai добавляет "следующий/предыдущий" объект (in/an/il/al) для редактирования "на расстоянии", а текст-объекты по AST для функций, классов и параметров даёт плагин nvim-treesitter-textobjects (через свои queries). Важно не путать: встроенный в Neovim treesitter (он есть в ядре ещё с 0.5) сам по себе предоставляет лишь парсеры и API (vim.treesitter) - готовых мапов вроде af/if/ac он по умолчанию не вешает даже в 0.12; чтобы получить точные по AST границы, нужны либо queries этого плагина, либо собственные на базе vim.treesitter. Подробнее - глава 27.
Антипаттерн №6: чрезмерный визуальный режим

Визуальный режим (v, V, Ctrl-v) - мощный инструмент, особенно для блочного редактирования и случаев, когда нужно видеть выделение глазами. Но превращать его в способ делать всё - антипаттерн.

Каждый раз, когда вы делаете v + движение + оператор, спросите: нельзя ли это записать как "оператор + объект" напрямую?

Код: Выделить всё

антипаттерн: viwd     (визуально выделить слово, потом удалить)
правильно:   diw       (на одно нажатие короче, и dot-repeatable)

Код: Выделить всё

антипаттерн: v$d       (выделить до конца строки, удалить)
правильно:   D  (или d$)
Почему "оператор + объект" лучше визуала там, где он применим:
  • Короче - на одно нажатие (нет отдельного входа в режим).
  • Повторяемо - . повторит diw, но не повторит цепочку визуальных действий так же предсказуемо.
  • Переносимо - именно эта грамматика работает в IdeaVim, vscode-neovim, vi-mode шелла (см. главу 31).
Визуальный режим оставляйте для того, что он делает действительно лучше: блочные правки (Ctrl-v), выделение нестандартных диапазонов "на глаз", операции, где границу проще увидеть, чем описать объектом. Подробно - глава 17.

Антипаттерн №7: не пользоваться точкой-повтором (.)

Точка-повтор (.) повторяет последнее изменение целиком - это один из самых недооценённых навыков Vim, и не пользоваться им - отдельный антипаттерн. Симптом - когда вместо . человек снова и снова делает либо то же редактирование руками, либо чинит результат связкой u/Ctrl-r ("сделал - отменил - переделал чуть иначе"). u и Ctrl-r - это аварийный откат/возврат, а не инструмент итеративного редактирования.

Классический рабочий паттерн "изменил один - повторил точкой на остальных":

Код: Выделить всё

Заменить слово foo на bar в нескольких местах.
делаешь один раз: cwbar<Esc>   (change word -> печатаешь bar)
дальше на каждом вхождении: n . n . n .   (нашёл -> повторил то же изменение)
Именно ради . стоит предпочитать "оператор + объект" визуалу и diw вместо dw (см. №2 и №6): такие правки повторяются точкой предсказуемо, тогда как цепочка визуальных действий или зависимое от позиции dw - нет.

Антипаттерн-спутник - спам u/Ctrl-r вместо точечного редактирования: вместо того чтобы сразу сделать аккуратную правку через оператор и повторить её ., человек правит "грязно", откатывает и пробует заново. Если вы часто пляшете на u/Ctrl-r - это сигнал, что изменение стоило выразить одной командой и повторить точкой.

Антипаттерн №8: перегруженный конфиг новичка

Очень частая ошибка: не освоив базовых движений, человек тащит в конфиг 40 плагинов, копирует чужой init.lua целиком и получает "магический ящик", который непонятно как чинить.

Симптомы:
  • Конфиг на сотни строк, из которых вы понимаете дай бог половину.
  • Каждая проблема решается гуглением "как сделать X в моём дистрибутиве", а не пониманием.
  • Стартап тормозит, потому что всё грузится сразу (нет lazy-loading).
  • При первой ошибке после :Lazy update непонятно, что сломалось.
Здравый путь 2026:
  • Если вы только начинаете - берите kickstart.nvim как обучающий старт: это один комментированный файл, который полезно прочитать целиком и понять, как устроены LSP, treesitter, автодополнение. Подробнее про дистрибутивы - глава 30.
  • Если хотите рабочую IDE "из коробки" - LazyVim, один из самых популярных пресетов на сегодня: рабочий сетап на lazy.nvim, где blink.cmp уже стал дефолтным движком автодополнения, плюс система :LazyExtras. Но принимайте его соглашения осознанно.
  • Не смешивайте "магию дистрибутива" с непониманием основ. Рабочий приём: жить на LazyVim, а в свободное время разобрать kickstart, чтобы не зависеть от чужих абстракций.
  • Стройте конфиг инкрементально: добавили плагин - поняли, зачем он, как его выключить, и что он биндит. Используйте lazy-loading по event/ft/cmd/keys (см. главу 23).
Меньше - почти всегда лучше. Перегруженный конфиг - это не продвинутость, а технический долг.

Как ломать вредные привычки

Знать, как правильно, - мало. Привычки лечатся не силой воли, а изменением среды и системным дриллом.

Метод "привычка-ломатель" через плагин

В экосистеме Neovim 2026 стандартный инструмент - hardtime.nvim (m4xshen/hardtime.nvim). Он:
  • предупреждает и блокирует спам одной клавиши (hjkl, стрелки), если вы жмёте её слишком много раз подряд;
  • подсказывает более эффективные движения и counts в реальном времени;
  • настраивается по строгости.
Это прямой потомок идеи Vimcasts "habit-breaking, habit-making": сделать вредное действие физически некомфортным, чтобы мозг сам начал искать правильный путь.

Код: Выделить всё

-- пример подключения через lazy.nvim
{
  "m4xshen/hardtime.nvim",
  dependencies = { "MunifTanjim/nui.nvim" },
  opts = {},
}
Минимальный "ручной" вариант без плагина - отключить стрелки (<Nop>, см. выше) и приучиться к relativenumber.

Метод "одна-две команды в неделю"

Не пытайтесь выучить весь Vim за выходные - это антипаттерн обучения. Возьмите 1-2 новые команды/объекта на неделю, наклейте стикер на монитор и сознательно применяйте их в реальной работе, пока не уйдут в мышечную память. Потом - следующие. План обучения подробно - в главе 33.

Метод "Vim повсюду"

Один и тот же набор движений в редакторе, IDE (IdeaVim), браузере (Vimium/Tridactyl) и шелле (set -o vi) закрепляет навык быстрее любого тренажёра - потому что вы практикуетесь весь день, а не на специальных сессиях. Это глава 31.

Лучшие практики 2026
  • Caps Lock - на Ctrl/Esc на уровне ОС. Самый дешёвый эргономический апгрейд; делайте его в первый же день.
  • Отключите стрелки в нормальном режиме (<Nop>) и включите relativenumber - это два мува, которые ломают сразу два главных антипаттерна.
  • Поставьте hardtime.nvim, если ловите себя на спаме hjkl. Не полагайтесь на дисциплину - полагайтесь на среду.
  • Думайте "глагол + объект", а не "выдели и сделай". ci(, daw, yap, dit - это ядро продуктивности, которое к тому же переносится во все vim-совместимые среды.
  • Освойте точку-повтор (.) как отдельный навык. "Изменил один раз - повторил . на остальных" экономит уйму нажатий; стройте правки так, чтобы они повторялись предсказуемо (diw вместо dw, оператор+объект вместо визуала).
  • Микропаузы по таймеру. Модальное редактирование снижает работу мышью, но без нейтральных запястий и пауз перенапряжение всё равно копится.
  • Конфиг - инкрементально. Новичку - kickstart.nvim для понимания или LazyVim для готового сетапа; не тащите 40 плагинов, не освоив базу.
  • Используйте Ctrl-[ как Esc на домашнем ряду, если не хотите возиться с двойной ролью Caps Lock.
Частые ошибки
  • "Переучусь потом". Чем дольше живёте с антипаттерном, тем дороже переучивание. Ломайте привычки сразу, пока навык не зацементировался.
  • Считать модальное редактирование достаточной защитой от RSI. Оно снижает работу мышью, но не исправит задранные запястья, поднятые плечи и отсутствие перерывов.
  • Урезать timeoutlen до 100 мс ради jk->Esc. Это ломает многоклавишные leader-последовательности: вы не успеваете дожать вторую клавишу. Либо ставьте better-escape.nvim (детектит комбо без таймаута), либо используйте Ctrl-[. См. главу 21.
  • Брать v:count вместо v:count1 в своих мапах. При вызове без счётчика получите 0 и пустое действие.
  • Лечить дальние прыжки счётом j без relativenumber. Прикидывать "на глаз, сколько строк" - медленно и неточно; пусть номера считают за вас.
  • Перегружать конфиг "на всякий случай". Каждый непонятый плагин - это будущая поломка, которую вы не сможете диагностировать.
  • Делать перемап Caps Lock внутри Vim, а не в ОС. Тогда он работает только в редакторе, а вы хотите эффект во всей системе.
  • Жить в визуальном режиме. Для большинства правок "оператор + объект" короче и лучше повторяется точкой.
  • Не пользоваться точкой-повтором и плясать на u/Ctrl-r. Если вы переделываете одно и то же изменение руками или "правлю - откатываю - пробую заново", вы не используете .: выразите правку одной командой и повторяйте её точкой.
Упражнения
  1. Отруби стрелки. Добавь в конфиг <Nop> на четыре стрелки в нормальном режиме и поработай так один полный день. Запиши, в каких сценариях рука всё ещё "тянулась" к стрелкам - это твои слабые места в движениях.
  1. Перемап Caps Lock. Настрой Caps Lock на Esc или на двойную роль (Esc/Ctrl) средствами своей ОС. Проверь, что это работает не только в Neovim, но и в браузере, и в терминале.
  1. Охота на визуал. Возьми любой свой рабочий файл и пять раз поймай себя на связке v + движение + оператор. Каждый раз перепиши то же действие через "оператор + объект" (diw, ci(, da{, dit, yap). Замерь разницу в количестве нажатий.
  1. relativenumber + counts. Включи :set number relativenumber. Открой файл строк на 100 и перемещайся по нему только прыжками: <count>j/k, {/}, Ctrl-d/u, gg/G, :N. Запрети себе одиночные j/k на эту сессию.
  1. Поставь hardtime.nvim (или вручную ограничь себя) на неделю. В конце недели сравни ощущения: где привычки уже изменились, а где плагин всё ещё ругается.
  1. Аудит конфига. Пройди по своему init.lua/.vimrc и для каждого плагина ответь: зачем он, что биндит, как его выключить. Удали всё, на что не смог ответить.
Главное из главы
  • Эргономика - это инвестиция в долголетие навыка. Нейтральные запястья, локти ~90°, центрированная по корпусу клавиатура, расслабленные плечи и микропаузы каждые 10-25 минут.
  • Caps Lock -> Esc/Ctrl на уровне ОС - обязательный первый шаг. Альтернатива для Esc - Ctrl-[ на домашнем ряду.
  • Модальное редактирование снижает работу мышью (до ~70%), но не отменяет правильную позу и перерывы.
  • Главные антипаттерны: стрелки и тяга к мыши, спам hjkl, hjkl на дальние дистанции, отказ от counts и текстовых объектов, чрезмерный визуал, отказ от точки-повтора (.), перегруженный конфиг новичка.
  • Замена: движения и поиск вместо стрелок/спама, relativenumber + counts + {/}/Ctrl-d/u для дистанций, "оператор + объект" вместо ручного выделения, инкрементальный конфиг.
  • Привычки ломаются средой, а не волей: отключение стрелок, hardtime.nvim, "1-2 команды в неделю", "Vim повсюду".
В следующей главе - рабочие рецепты, тренажёры (vimtutor, vim-be-good, VimGolf) и конкретный план обучения, который превращает всё это в устойчивый навык.
👍6 ❤️2 🔥 😄 🤔1
Аватара пользователя
fan_fedya
Сообщения: 1
Зарегистрирован: 21 май 2026, 02:43

Re: Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение fan_fedya »

А у меня jk на Esc норм работал пока не повесил leader на пробел и не начал делать пробел потом f - оказалось urезал timeoutlen до 100 и leader-комбы не дожимались, как в главе и написано. Поставил better-escape вместо урезания таймаута, всё встало на места.
👍 ❤️2 🔥 😄 🤔
Аватара пользователя
theels
Сообщения: 1
Зарегистрирован: 01 июн 2026, 07:14

Re: Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение theels »

Отрубил стрелки через <Nop> как в упражнении, первые два дня правда бесило, рука всё время уходила. Зато потом hjkl и w/b сами пошли. relativenumber добавил - теперь 8j вместо долистывания, считать в уме не надо, номер слева сам показывает.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
broiler
Сообщения: 1
Зарегистрирован: 12 май 2026, 16:49

Re: Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение broiler »

спасибо, наконец дошло почему diw лучше чем dw - не из за нажатий а потому что точка повторяет предсказуемо, не зависит от позиции курсора в слове. перестал жить в визуале, viwd сменил на diw
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
PgAdmin
Сообщения: 1
Зарегистрирован: 01 июн 2026, 14:17

Re: Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение PgAdmin »

вопрос про count с текстовыми объектами. правильно понял что 2i( это не вторая ближайшая пара скобок а на уровень выше по вложенности? всегда думал что count там как поиск следующих, а оно про глубину
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
mark999
Сообщения: 1
Зарегистрирован: 13 май 2026, 01:41

Re: Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение mark999 »

Перемап Caps Lock на Esc в первый же день - это реально лучший совет из всей главы. Год сидел и тянулся мизинцем в угол, после caps:escape вообще другая жизнь. Только не забывайте что это в ОС, а не в конфиге, я сначала по тупости в init.lua пытался.
👍2 ❤️ 🔥 😄 🤔2
Аватара пользователя
archmain
Сообщения: 1
Зарегистрирован: 07 июн 2026, 23:32

Re: Эргономика и антипаттерны: как не навредить себе и не застрять

Сообщение archmain »

Roman_Vim писал(а):набор бессмысленных символов
вот это про русскую раскладку прям больно. сто раз ловил себя как жму dd а оно ничего, потому что забыл переключить. langmap пока не осилил, лечусь дисциплиной пока что
👍1 ❤️1 🔥1 😄 🤔1
Ответить
← Предыдущая глава
Vim повсюду: IDE, браузер и shell
Следующая глава →
Рабочие рецепты, тренажёры и план обучения

Все главы курса «Vim и Neovim: модальное редактирование от основ до современного Neovim»

Поделиться темой: ✈ Telegram VK
  • Похожие темы

Вернуться в «Vim и Neovim: модальное редактирование от основ до Neovim 2026»

Кто сейчас на конференции

Сейчас этот форум просматривают: Amazon [Bot] и 1 гость