2009-04-03 4 views
3

Мне нужен код сценария, чтобы выделить «[Capítulo» и «]» и все, что между ними. Спасибо.Vim: нужна помощь с маленьким кодом скрипта, чтобы выделить

Я хочу, чтобы он работал каждый раз, когда я открываю, например, файл .txt. Также как подсветка кода.

+0

Если вы наберете /\[Capitulo.*\]/, что произойдет? – ojblass

+0

Также хотите, чтобы скрипт был прав? Clarifiy, что в quesiton или каждый ответ будет таким же! – ojblass

ответ

5

Вот простой способ сделать это:

в vim, убедитесь, что подсветка синтаксиса включена :syn on

введите команду :highlight, чтобы получить список всех th e выделите имена групп и образцы того, на что они похожи. Error группа выглядит, как он выделяется хорошо в моем ColorScheme, так что я буду использовать это в моем примере (но вы можете использовать любой из других имен, как Todo или Search)

:syntax match Error /\[Capítulo[^\]]*\]/ 

Эта модель будет держать вас от жадного соответствия самого большого куска. Несмотря на то, что другие люди предлагают вам использовать регулярное выражение /\[Capítulo.*\]/ - это, вероятно, не то, что вы хотите, потому что оно будет соответствовать всем между ними, если на линии есть два или более таких шаблона.

Например /\[Capítulo.*\]/ будет соответствовать всю эту строку:

[Capitulo Foo] эти слова не должны быть выделены [Capitulo бар]

Тот же самый пример, но с /\[Capítulo[^\]]*\]/ соответствует только материал внутри []:

[Capítulo foo] эти слова не должны быть выделены [Capitulo бар]

С помощью регулярных выражений, это обычный прием, чтобы сделать группу, которая соответствует всем, кроме символа, который вы хотите, чтобы закончить матч, вместо того, чтобы использовать .* который будет соответствовать как можно большему количеству символов. В этом случае мы делаем группу [^\]]* - которая говорит «матч все, кроме]».

Если это работает так, как вы хотите его, добавьте строку матча синтаксиса без «:» на ваш .vimrc

+0

Другой способ избежать закрывающей скобки - использовать нежелательное соответствие: /\[Capítulo.\{-}\]/. \ {-} эквивалентен Vim для Perl's *? оператора и говорит совпадение нуля или более, как можно меньше. – DrAl

1

Регулярное выражение это то, что вы ищете:

Тип /, чтобы войти в «режиме поиска» и введите:

\[Capítulo.*\]/
+0

, тогда вам нужно включить выделение: set hls –

 Смежные вопросы

  • Нет связанных вопросов^_^