Найти тему
Блокнот математика

Рубрика "Секреты Вим". Команды квадратных скобок: в основном, для Си

Привет, коллеги. Мы уже обсудили семейства команд на g (самые разнообразные и порой очень полезные) и на z (в основном, фолдинг; но не только). Теперь обсудим третью серию: команды, начинающиеся на одну из двух квадратных скобок.

Это круглые скобки. ПРОСТО КРУГЛЫЕ СКОБКИ! Кстати, вполне рабочая команда Вим: прыгает туда-сюда по абзацам.
Это круглые скобки. ПРОСТО КРУГЛЫЕ СКОБКИ! Кстати, вполне рабочая команда Вим: прыгает туда-сюда по абзацам.

Поскольку скобок две, то команды идут парами; например, одна ищет что-то вверх, а другая вниз. Команд довольно много, и они большей частью призваны облегчить жизнь программистам на Си, С++, Java, и других языках с си-подобным синтаксисом.

Давайте начнем с тех, что в эту серию не входят. Большинство команд могут употребляться с повторителем.

[c или ]c — назад или вперед на начало различия (при работе в режиме diff).

[s или ]s — предыдущее/следующее слово с орфографической ошибкой.

[z или ]z — переход на начало/в конец открытого фолда

[' и [` — Ищут ближайшую метку выше по тексту, курсор на первый непробельный символ строки или на саму метку. Вариант с ] ищет метку ниже по тексту.

[f или ]f — синонимы gf: открывают файл, имя которого в тексте под курсором. Впрочем, это чаще всего нужно для открытия тех самых include-ов.

[p или [P — синонимы, вставляют текст из регистра, как "P" (вставка выше курсора), но выравнивают его по текущей строке. С ] аналог p.

Далее приведем команды, которые полезны в первую очередь при работе с кодом. Ориентация на Си, хотя кое-что полезно и для других языков. А кое-что рассчитано именно на си-подобный язык и можно переопределять под свои нужды. Повторитель также может быть употреблен.

[ CTRL-D — Ищет определение слова под курсором в текущем файле и в заголовочных (# include), начиная с начала текущего. Под определением понимается препроцессорное # define. Например, под курсором слово true; нажатие [ и затем <C-D> переместит курсор на определение
# define true false. Вариант с ] начинает поиск с позиции курсора.

[D или [d — Покажут все определения или первое определение, не перемещая курсор. Вариант с ] начинает поиск с позиции курсора.

[# — Ищет выше курсора незакрытый # if, # else or # ifdef. Вариант с ] ищет вниз.

Эти команды прямо ориентированы на препроцессор, который, впрочем, не только для Си полезен. Идем далее:

[ CTRL-I — Аналогично [ CTRL-D, но ищет само слово под курсором — первое вхождение. Начинает с верха текущего файла, заглядывает в заголовочные (этим отличается от gD). Вариант с ] начинает поиск с позиции курсора.

[I или [i — Покажут все вхождения слова или первое, не перемещая курсор. Вариант с ] начинает поиск с позиции курсора.

Эти команды ориентируются на # include. Далее:

[/ или [* — Ищет выше по тексту комментарий Си, курсор на начало. Вариант с ] ищет вниз и курсор на конец комментария.

[[ или [] — Ищет выше по тексту открывающую/закрывающую фигурную скобку, которая первая на строке.

]] или ][ — Ищет ниже по тексту открывающую/закрывающую фигурную скобку, которая первая на строке. Команда ]] после оператора захватит также и закрывающую скобку, если она первая на строке.

Эти команды удобны для отлова тел функций в Си при условии, что вы ставите скобки в начале строки. Если нет, есть смысл переопределить эти команды. Следующие две пары просто ищут скобки:

[{ или ]} — переход назад/вперед на незакрытую фигурную скобку (соответственно, открывающую или закрывающую).

[( или ]) — переход назад/вперед на незакрытую круглую скобку (соответственно, открывающую или закрывающую).

Следующие четыре команды рассчитаны на синтаксис С++ или Java или другого языка из этого семейства:

[m или ]m — назад или вперед на метод в классе, в его начало. Если M, то в конец метода. Если метод не найдется, переход на начало или конец определения класса. Вне класса работать не будут: если не найдут подходящей скобки, выдадут ошибку, а если найдут, то перейдут туда и это вряд ли то, что вы ожидаете.

Вот такие вот тонкости умеет вытворять Вим! Удачи, коллеги.

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022