Маркированные списки для текстовых документов в Vim
Хотя Vim поддерживает автоматическое отступление в списках, настройка по умолчанию охватывает только упорядоченные списки, начиная с цифр, например:
1. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
2. veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.
Я не смог выяснить, как распространить это на неупорядоченные, маркированные списки, такие как:
* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
* veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat.
Изменение formatlistpat
RegEx не привел к желаемым результатам (действительно, он даже сломал упорядоченные списки).
4 ответа
Знание того, на что вы пытались установить значение, могло бы помочь, но я предполагаю, что вы не избежали обратной косой черты.
Значением по умолчанию является
formatlistpat=^\s*\d\+[\]:.)}\t ]\s*
но чтобы фактически установить это значение (в вашем vimrc или на cmdline), вы должны использовать
set formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
Это объясняется в :help option-backslash
, Простая модификация, чтобы позволить formatlistpat
работать с *
неупорядоченные списки с разделителями будут
set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
В дополнение к тому, что написал Jamessan (в частности, его formatlistpat
для работы со списками *), важно, чтобы опция 'c' (форматирование комментариев) была отключена в formatoptions
:
set formatoptions-=c
в противном случае Vim запутается между форматированием * маркированных списков и форматированием комментариев. Вы получите дополнительный * на 2-й и последующих строках.
Я пишу новый ответ на этот вопрос, потому что мне пришлось объединить несколько ответов из этого вопроса и этого другого вопроса, чтобы сделать эту работу. Вот моя окончательная конфигурация.
set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
У меня были некоторые проблемы с получением списков, таких как a)
признал, поэтому я выложу свое решение здесь:
" Recognise lists like 1), 1., a), a., and so on
" Note that | need to be escaped AND preceeded by a literal backslash
set formatlistpat=^\\s*\\([0-9]\\+\\\|[a-z]\\)[\\].:)}]\\s\\+