2009-04-28 2 views
0

я ошибочно сделал маркер складывающийся моей .vimrc:исправляющие Wrong Маркер Сворачивание в VIM

{{{8 #CS 
something.. 
}}}8 
{{{9 #Math 
... 
}}}9 
... many more! 

мне нужно переключить формат "#SOMETHING {{{NUMBER", как:

#CS {{{8 
something.. 
}}}8 
#Math {{{9 
... 
}}}9 
... many more! 

Что неправильно в следующем коде:

:%s$/({{{\d/) /(#[:alpha:]/)$\2 \1$g 

[Решение]

%s$\({{{\d\) \(#[[:alnum:]]*\)$\2 \1$g 

ответ

1

Вы забыли, чтобы избежать круглые скобки и классы POSIX символов действительны только в пределах символа класса [[:alpha:]]:

:%s$/\({{{\d/\) /\(#[[:alpha:]]/\)$\2 \1$g 

Примечание, однако, что ваш пример текст не содержит косую черту - это то, что ваш образец текста на самом деле нравится?

выше регулярное выражение изменяет этот

/{{{8/ /#A/ 

К этому

#A/ {{{8/ 
+0

Спасибо. Я решил проблему. Понятно, что я был слишком неповрежден с регулярным регулярным выражением. Ошибки фиксируются в «моем решении». Ваше регулярное выражение очень похоже на мое, что я написал на почту несколько минут назад. –

+0

Спасибо за разработку классов символов POSIX. –

1

:%s/{{{\(\d\) \(.*\)/\2 {{{\1/g

это работает, но в своем регулярном выражении Я не понимаю, почему вы получили $ за с.

+0

знак после с не имеет значения, если не нужен знак. Например, я обычно использую #, но теперь в матче был # -знак, поэтому мне пришлось использовать некоторые другие. Выберите все, что вам подходит. –

+0

Слово совета: Использование. * Может привести к хаотическому возврату. В моем случае мне нужно было быть очень точным, чтобы избежать возврата. –

+0

vim позволяет использовать произвольные разделители для ': s', поэтому': s $ a $ b $ g' совпадает с ': s/a/b/g'. Короче говоря, это позволяет избежать избежания косых черт, когда они происходят в вашем шаблоне или заменяющем тексте. – rampion

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