Сегодня сводная заметка: обсудим команды, начинающиеся с g. Сама g является чем-то вроде клавиши shift, открывая возможность дать клавишам другой смысл.
Итак...
g# и g* — поиск слов под курсором, вверх и вниз, как и просто решетка и звездочка. Только поиск ведется без якорей концов слова. То есть, если под курсором слово "42", то g* найдет и "420", и "642", и "1420".
g0 и g$ и g^ — переход на первый/последний символ видимой на экране части строки, а также на первый непробельный.
g& — повтор последней замены на всех строках файла (& — только на текущей).
g'и g` — переход на метку (см. также эту заметку). Отличие от просто ' или ` в том, что не меняется список прыжков.
g+ и g- — переход по дереву отмен. В отличие от u и <C-R>, именно по дереву, а не основной линии истории правок.
g, и g; — переход по списку изменений. Это просто прыжки по тексту, отмены не деляются.
g8 и ga — вывести байты юникодного (возможно, многобайтного) символа под курсором или просто код символа под курсором.
g?, g?g?, g?? — шифрование по движению или всей строки алгоритмом ROT13 (повторное шифрование расшифровывает). Это сдвиг букв английского алфавита на 13 позиций. Букв 26, так что повтор равен отмене.
g<C-A> — это умный инкремент для создания списков.
Напишите "1.", выйдете из режима вставки. Нажмите yy11p, скопировав строку 12 раз. Нажмите V10j, выделив 11 строк. Нажмите g, затем <C-G>. Получите список от 1 до 12. А просто <C-A> прибавляет единицу к числу под курсором, тогда как <C-X> вычитает.
gd, gD — прыжок наверх на определение слова (первое упоминание, с учетом синтаксиса Си или просто первое в файле).
gE и ge — прыжок назад на конец предыдущего слова. Разница в определении слова, как и у пар w-W, B-b, E-e.
gf и gF — переход на файл, имя которого под курсором. Вторая команда позволяет еще и строку указать, например, file.txt 42
gg — переход на первую строку (или можно указать строку: 42gg).
g<C-G> — статистика по файлу и о позиции в тексте. Можно узнать число слов, символов и кое-что еще полезное о тексте.
gh, gH, g<C-H> — включают режим классического выделения текста.Ну, есть такой режим, помимо чисто Вимовского выделения. Выделенный текст замещается первым введенным символом. Может, кому понравится, но вообще полезен для создания разных шаблонов.
gi — начать режим вставки там, где закончился предыдущий (там метка '^).
gI — начать режим вставки в начале строки (на первом символе, пробел это или нет).
gJ — соединяет строки, не вставляя между ними пробел. Просто J вставляет пробел.
gj, gk — переход по строкам (стрелки), но по строкам логическим, что важно при сворачивании.
gm — переход на символ, который в центре экранной строки.
gn, gN — повторить поиск и сразу выделить найденное
go — переход на первый (или указанный) байт файла.
gp, gP — вставить текст из регистра (указанного или безымянного), курсор не перемещать. Просто P и p вставляют, перемещая курсор. Разница между командами в том, что p вставляет после курсора, а P до.
gq и gw — форматирование текста, во втором случае курсор остается на месте.
gR — переход в режим виртуальной замены: текст слева, справа, ниже и выше курсора не двигается, по возможности.
gr — замена символа (или скольких-то символов) в виртуальном режиме: текст, по возможности, не смещается.
gs — заснуть на секунду (или можно указать число секунд). Может пригодиться в скриптах.
gt, gT — переход по вкладкам вправо и влево (потом по кругу). Есть асимметрия: ngt переходит на вкладку номер n, а ngT — на n вкладок влево.
gu, gU и g~ — перевод текста в нижний/верхний/другой регистр
gv — повторно выделить то, что было выделено в прошлый раз.
gx — открыть файл под курсором специальной программой. Например, в тексте присутствует amore_mio.jpg — нажимаем gx и фотография открывается в программе, которая для этого предназначена. Подробнее в другой заметке.
g] — ищет подходящий тег и предлагает выбрать. Команда <C-]> просто переходит на первый подходящий.
g@ — вызывает функцию. Это позволяет создавать свои операторы: команды, обрабатывающие текст по движению.
Все, что в список выше не попало, либо свободно, либо устарело, либо находит очень редкое употребление. Можете смело использовать эти сочетания для своих целей. Также рекомендуется переопределять Q и _, смысл которых не слишком полезен.
Удачи, коллеги.