% VIM Key Command - PullRequest
       11

% VIM Key Command

2 голосов
/ 05 ноября 2008

Есть ли способ, чтобы% в vim находил следующее ([{или что-то еще, даже если он не находится на той же строке?

Пример:

int main(int argc, char ** argv) {
     #Your cursor is somewhere in this comment, I want
     #it to get to the ( after printf
     printf("Hello there.\n");
}

Ответы [ 4 ]

4 голосов
/ 05 ноября 2008

Если вы хотите найти открывающие скобки на последующих строках без плагинов, просто войдите в обычный режим и введите:

/{ [enter]

Где {тип скобки, которую вы ищете.

Затем вы можете просмотреть их все с помощью n и N .

Чтобы сопоставить клавишу F12 для включения и выключения подсветки поиска используйте этот прием.

2 голосов
/ 05 ноября 2008

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

В любом случае, если вы хотите, чтобы% имел суперспособности, плагин matchit - это то место, с которого нужно начинать. Он включен в нормальный дистрибутив, поэтому вам не нужно его скачивать. Просто добавьте

:runtime macros/matchit.vim

К вашему .vimrc, и% также узнает много новых уловок (как сопоставлять сбалансированные теги XML, если / затем / конец, если операторы в языках, которые делают те с ключевыми словами), и т. Д. Это не решит ваш запрос напрямую , поскольку matchit использует те же ограничения, что и обычный% (это не совпадение, начинающееся с или после курсора на той же строке). Но поскольку он может использовать поиск по регулярному выражению в качестве маркеров совпадения (а не просто символы), его можно настроить так, чтобы открытое выражение было. \ n. {или что-то такое, что соответствовало бы этому критерию, но поднимите скобку на линии ниже.

1 голос
/ 06 ноября 2008

Похоже, у Джима Бургера это есть, но на тот случай, если вы на самом деле спрашивали, как искать любую из этих вещей:

/ [{[(] [Enter]

Это найдет следующий из этих символов.

Кстати: в этом случае vim достаточно умен, чтобы понять, что вы хотите, но вам часто приходится выходить за квадратную или круглую скобку с помощью \. Например, для поиска следующей закрывающей скобки вы должны набрать (Обратите внимание на \]):

/ [\]})] [Enter]

1 голос
/ 05 ноября 2008

Это озадачивает ... Для меня% находит близкое совпадение для любого {[(независимо от того, на сколько строк находится совпадение. Я не вижу ничего в моем .vimrc, которое могло бы изменить это поведение, случайно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...