поиск всего слова в Vim (тире) - PullRequest
5 голосов
/ 04 февраля 2011

Я знаю, что для поиска целого слова я должен использовать /\<mypattern\>. Но это не так для символа тире (+ U002d), и /\<-\> всегда дает сбой. Я также пытаюсь /\<\%d45\>, и это тоже не получается. кто-нибудь знает причину?

Edit2: Поскольку упомянутое @bobbogo дефис не в 'iskeyword', поэтому я добавляю :set isk+=- и /\<-\> works!

Edit1: Я думаю, что в Vim /\<word\> действителен только для буквенно-цифровых символов, и мы не должны использовать его для знаков пунктуации (см. Edit2). Я должен изменить свой вопрос и спросить, как мы можем искать знак пунктуации во всем мире, например, я хочу, чтобы мой поиск нашел знак вопроса в "a? B" и шаблоны типа "??" и "abc?" не должно быть действительным.

Ответы [ 3 ]

4 голосов
/ 04 февраля 2011

\< соответствует границе нулевой ширины между несловесным символом и символом слова.Что такое слово персонаж?Это задается параметром isk (:help isk).

Поскольку - отсутствует в вашем параметре isk , - никогда не сможет начинайте слово, таким образом \<- будет никогда совпадать.

Я не знаю, что вы хотите, но /\>-\< будет соответствовать тире в hello-word.

0 голосов
/ 12 января 2016

Как сказал ОП. Чтобы включить тире - в поиск, просто выполните:

:set isk+=-

Вот и все.

Пример: Когда вы нажимаете * над буквой c из color-primary, он будет искать полное имя переменной, а не только color.

0 голосов
/ 04 февраля 2011

Всегда можно найти регулярное выражение \byourwordhere\b

...