Избегайте переформатирования списков маркеров с помощью форматирования + = a

9

Я использую Vim formatoptions +=aкак описано в Vim: перенос слов для документов для автоматического форматирования строк при написании документов, особенно документов Markdown.

Моя проблема в том, что Vim хочет переформатировать также списки маркеров, потому что между каждой точкой маркера есть пустая строка.

Что радует, что VIM переформатирует

This is wath we will do:

* task 1,
* task 2,
* task 3.

в

This is wath we will do:

* task 1,   task 2,   task 3.

(Я также не понимаю, почему звездочки исчезают в процессе переформатирования.)

Как я могу заставить Vim перестать переформатировать эти списки?

Gioele
источник
Звездочки исчезают, потому что Вим ошибочно принимает их за комментарии лидеров.
gioele

Ответы:

5

Попробуй это:

  • добавить nк formatoptionsтак Vim распознает списки ( :set fo+=n)
  • установите formatlistpatопцию для распознавания звездочки как маркеров ( set flp+=\\\|^\\*\\s*) (обратите внимание, что количество обратных слешей зависит от вашего magicуровня ness).

По моим тестам он не идеален, но, похоже, близок.

jw013
источник
3

filetypeУстановлен ли параметр в markdownмомент редактирования файлов Markdown? Вы можете использовать :verbose set filetype?для проверки текущего значения.

После запуска :filetype plugin on(например , от вашего .vimrc), и filetypeустановлен на markdown, Vim будет источник , $VIMRUNTIME/ftplugin/markdown.vimкоторый будет установить некоторые опции ( comments, formatlistpatи formatoptions) , которые должны помочь с форматированием Markdown элементов списка.

Примечание. Общий шаблон имени файла Markdown *.mdфактически сопоставляется с типом файла с modula2помощью $VIMRUNTIME/filetype.vim. Вы можете переопределить этот параметр, если вы обычно используете этот шаблон имени файла для ваших файлов Markdown. Вы можете сделать это, поместив это в свой .vimrcфайл:

autocmd! filetypedetect BufNewFile,BufRead *.md setfiletype markdown

В качестве альтернативы, вы можете добавить моделину к каждому файлу:

<!-- vim: set filetype=markdown : -->
Крис Джонсен
источник
Файлы синтаксиса tpope (тот, который я использую) устанавливают formatlistpath в github.com/tpope/vim-markdown/blob/master/ftplugin/markdown.vim . По некоторым причинам похоже, что ftplugin не загружен ...
gioele
1
Этого vim-markdownплагина должно быть достаточно, но вам нужно включить его функциональность (и других плагинов файлового типа) с помощью :filetype plugin on. См :help :filetype-plugin-on.
Крис Джонсен