2015-05-25 4 views
1

Я изменил переменную пункт старт для подсчета строк, начиная с *:. Как начало абзацем:обратного пункт скачет ближайший пункт

(setq paragraph-start "\f\\|[ \t]*$\\|[ \t]*[0-9.]\.\\|.*:$\\|") 

Однако, если у меня есть буфер:

foo: 
bar: 
baz: some stuff 
more 
_ 

(Где _ указывает местоположение точки) Затем первый абзац назад переместится к началу строки «bar:», а не строка, начинающаяся с «baz:», как и ожидалось. Как изменить это поведение/почему он ведет себя таким образом?

ответ

1

Это потому, что у вас есть $ после ::

"\f\\|[ \t]*$\\|[ \t]*[0-9.]\.\\|.*:$\\|" 

$ матчи в конце строки. Поэтому часть вашего регулярного выражения, которая соответствует чему-то, за которой следует :, также требует, чтобы ничто не соответствовало :.

Первая линия (идет назад от пункта), которая заканчивается на :, является линией bar:.

(обратите внимание на то, что вы не можете .*:, если вы хотите, чтобы исключить возможность того, что предшествует : не включать :, например, если вы хотите, чтобы исключить a:b:c foo. Чтобы исключить :, используйте [^:]* вместо .*. И, чтобы исключить одиночный :, используйте [^:]+.)

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