Точное строковое совпадение в энергии? (Как 'regex-прочь' режим в меньше.)

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

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

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

, При попытке определить проект создать нагретые рули, час, говорящий с хорошим программистом, приведет его предлагать перчатки.

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

наиболее важный момент во всем этом - то, что это диалоговое окно : необходимо поделиться знаниями с разработчиком, и вместе работать для решения. Бросок резюме дизайна и спецификации по стене недостаточно, потому что Вы не усиливаете их способности предназначаться для проблемы.

35
задан jogloran 12 October 2009 в 02:01
поделиться

3 ответа

Глядя на ваш конкретный пример, возможно, самый простой способ сделать это (поскольку \ V здесь не поможет) - использовать ? вместо / : тогда вам не придется выходить из / s:

?((N/N)/(N/N))/N

Это будет искать в обратном направлении, а не вперед, но вы всегда можете использовать «N» вместо «n» для поиска вперед после первым делом. Или вы можете нажать / , а затем клавишу курсора вверх, чтобы автоматически избежать косой черты.

Однако вы ничего не можете сделать с экранированием обратной косой черты. Думаю, вы могли бы сделать:

:let @/ = escape(pattern, '\')

, а затем использовать n для поиска, но это, вероятно, не намного проще. Лучшее, что я могу придумать, это:

:command! -nargs=1 S let @/ = escape('<args>', '\')

Затем выполните:

:S (N)/(N+1)\(N)
n
21
ответ дан 27 November 2019 в 07:11
поделиться

Может быть что-то вроде этого:

nmap <Leader>s :execute '/\V' . escape(input('/'), '\\/')<CR>

Он выдаст вам запрос / и будет вести себя как встроенный поиск, но не будет выполнять поиск- as-you-type или другие подобные вкусности.

5
ответ дан 27 November 2019 в 07:11
поделиться

В зависимости от конкретной строки, которую вы ищете, префикс \ V , вероятно, поможет.
См. : help \ V :

after:    \v       \m       \M       \V         matches ~
                'magic' 'nomagic'    
          $        $        $        \$         matches end-of-line
          .        .        \.       \.         matches any character
          *        *        \*       \*         any number of the previous atom
          ()       \(\)     \(\)     \(\)       grouping into an atom
          |        \|       \|       \|         separating alternatives
          \a       \a       \a       \a         alphabetic character
          \\       \\       \\       \\         literal backslash
          \.       \.       .        .          literal dot
          \{       {        {        {          literal '{'
          a        a        a        a          literal 'a'

Итак, если у меня есть строка hello. * $ World , я могу использовать команду / \ V. * $ чтобы найти только . * $ - единственная часть строки , которая должна экранировать, - это еще одна обратная косая черта, но вы все равно можете выполнять группировку и т. д., экранируя специальный символ.


Еще одна команда, которую вы можете использовать, чтобы «избежать» косых черт:
:g #\V((N/N)/(N/N))/N#   

Команда : g - это глобальный поиск, с учетом того, что:

:[range]g[lobal]/{pattern}/[cmd]
                        Execute the Ex command [cmd] (default ":p") on the
                        lines within [range] where {pattern} matches.

Instead of the '/' which surrounds the {pattern}, you can use any other
single byte character, but not an alphanumeric character, '\', '"' or '|'.
This is useful if you want to include a '/' in the search pattern or
replacement string.

Итак, где я использовал # , вы могли бы использовать ? , @ или любой другой символ, отвечающий вышеуказанному условию. Загвоздка этой команды : g заключается в том, что она ожидает команду в конце, поэтому, если у вас нет конечного пробела после последнего символа, поиск не будет выполняться так, как вы ожидали. И снова, даже если вы используете \ V , вам все равно придется избегать обратных косых черт.

Если этот по-прежнему вам не подходит, в этом сообщении Nabble есть предложение, которое берет буквальную строку со встроенными обратными косыми чертами и другими специальными символами Vim, и утверждает, что ищет ее без проблем; но для этого необходимо создать функцию Vim,

31
ответ дан 27 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: