8

Хотя 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 не привело к желаемым результатам (действительно, оно даже сломало упорядоченные списки).

4 ответа4

10

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

Значением по умолчанию является

formatlistpat=^\s*\d\+[\]:.)}\t ]\s*

но чтобы на самом деле установить это значение (в вашем vimrc или на cmdline), вы должны использовать

set formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*

Это объясняется в :help option-backslash . Простая модификация, позволяющая formatlistpat работать с неупорядоченными списками с разделителями * , будет

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
3

В дополнение к тому, что написал jamessan (в частности, его предложение formatlistpat для работы со * списками), важно, чтобы опция 'c' (форматирование комментариев) была не установлена в formatoptions:

set formatoptions-=c

в противном случае Vim запутывается между форматированием * маркированных списков и форматированием комментариев. Вы получите дополнительный * на 2-й и последующих строках.

1

У меня были некоторые проблемы с получением списков типа 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\\+
1

Я пишу новый ответ на этот вопрос, потому что мне пришлось объединить несколько ответов из этого вопроса и этого другого вопроса, чтобы сделать эту работу. Вот моя окончательная конфигурация.

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .