Включение выделения уценки в Vim

139

Я использую Vim в терминале на моем MacBook Air с OS X Lion, и я не могу найти хороший плагин для подсветки синтаксиса Markdown.

Пока что пробовал плагин Plasticboy и плагин Тима Поупа . Плагин plasticboy работал нормально, но выделял пробелы в конце строк, и я не понял, как это отключить. (Это действительно раздражает, потому что каждый раз, spaceкогда я нажимаю, когда пишу, это выделяет персонажа.)

Плагин Тима, похоже, не особо выделял, кроме, возможно, используемых заголовков ###. Блоки кода и маркеры игнорируются. Я могу что-то там упустить. Я использую .mdрасширение в своих файлах Markdown, поэтому он должен выбирать тип файла.

Я также видел ссылку на Vim 7.3 со встроенной поддержкой Markdown, но без одного из этих двух плагинов я вообще не получаю выделения.

Требуются ли для работы какие-либо из них определенные цветовые схемы?

Джош Эрл
источник
24
*.mdне подходит для уценки. Это для файлов модуля. Плагин Tpope работает нормально (все эти плагины работают нормально) Вы должны использовать *.markdownрасширение
lucapette 09
7
@lucapette в ftdetect для плагина Tim Папы имеет также включать в себя *.md, наряду с: *.markdown,*.mdown,*.mkd,*.mkdn. Плагин plasticboy определяет только *.mkd,*.markdown,*.mdwn
автоопределение
1
Судя по исходникам плагина Plasticboy, похоже, что он тоже обнаруживает .md. Сейчас я заблокирован этим расширением, потому что я использую Scriptogr.am для своего блога, и это единственное расширение, которое они распознают прямо сейчас.
Джош Эрл,
1
Только что нашел это, и это довольно круто для уценки, приправленной github: github.com/jtratner/vim-flavored-markdown
Мэтью Тернер
1
Если у вас возникли проблемы с уценкой plasticboy / vim-markdown , пожалуйста, открывайте проблемы в проектах, чтобы разработчики могли их решить. Я считаю, что выделение конечных пробелов - хорошее поведение, поскольку двойные пробелы генерируют <br>теги, поэтому писатели должны знать об этом.
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

Ответы:

22

Это должно работать, чтобы отключить выделение пробелов в конце строки при использовании плагина plasticboy mkd:

:syn clear mkdLineBreak

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

Обратите внимание, что эта особая подсветка существует, потому что Markdown обрабатывает строки, заканчивающиеся двумя или более пробелами, специально путем вставки a <br>, поэтому это полезно.

Plasticboy плагина использует TODOосвещающий для этого правила, который является немного слишком много , поскольку он предназначен для, по умолчанию, будет очень броским - желтый фон - так , чтобы она выделяется. Вы можете сделать это менее заметным, изменив это highlightправило. Один из быстрых способов сделать это:

:hi link mkdLineBreak Underlined

Теперь эти пробелы в конце строки будут подчеркнуты. Попробуйте связываться с другими highlightгруппами, чтобы найти что-то, что может вам больше понравиться. Вместо использования linkвы можете получить еще более конкретную информацию об этих пробелах в конце строки: например, вы можете указать, что они отображаются как немного светлее / темнее, чем нормальный фон, используя свою собственную highlightкоманду, указав настраиваемые ctermfg , ctermbg , guifg , настройки guibg .

Как и выше, вы можете autocmdприменить свои конкретные настройки.

Для получения дополнительной информации о highlightгруппах ссылок введите: :help group-nameи вы увидите список групп, которые можно связать, которые сами должны отображаться с использованием их текущих highlightправил. Кроме того : :help highlight.

pb2q
источник
2
В этом есть смысл. Не понимал, что два пробела имеют значение в Markdown. Я думаю, что оставлю его включенным, если он меня не беспокоит. Благодарность!
Джош Эрл,
Да, поэтому выделение не срабатывает, пока не будет введено 2 пробела.
pb2q 09
@ josh-earl, смотрите мои правки, чтобы узнать больше об альтернативных вариантах использования плагина
plasticboy
308

Что касается подсветки собственного синтаксиса для уценки, я думаю, что она работает только для файлов с расширением .markdownпо умолчанию.
У меня возникли проблемы с подсветкой синтаксиса уценки для моих .mdфайлов.
Я старался:

:set syntax=markdown

И это сработало. Поэтому я включил в свой список следующую строку .vimrc:

au BufNewFile,BufFilePre,BufRead *.md set filetype=markdown

Теперь у моего vim есть подсветка синтаксиса для моих .mdфайлов.

BufFilePre необходим для: sav

PutzKipa
источник
13
Для всех, кто это читает: да, это работает и является гораздо более простым решением проблемы, чем установка плагина. Быстрый способ сделать это из командной строки: echo "au BufRead, BufNewFile * .md set filetype = markdown" >> .vimrc
RobinLovelace
11
Мне кажется, что это должен быть принятый ответ.
Энрико Кампидоглио
4
@SamStoelinga Это не ошибка, .mdтакже используется Modula. Чтобы определить, какой из них использовать, потребуется продвинутая эвристика.
nyuszika7h
8
Начиная с Vim 7.4.480, *.mdфайлы по умолчанию распознаются как Markdown.
fwalch
1
Правильно, но неполно. Чтобы это работало одинаково с Save As… :savкомандой, необходимо расширить автокоманду до BufFilePre:autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Serge Stroobandt
21

Подсветка собственного синтаксиса

Подсветка собственного синтаксиса для Markdown по умолчанию работает только для .markdownрасширения файла.

Следующая строка .vimrcдает наилучшие результаты для vimи gvim:

autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc

Пояснение:

1. Укажите свой вкус у Markdown!

Если вы работаете в основном с одной разновидностью Markdown (например, Pandoc ), не забудьте упомянуть и об этом! Это позволяет смешивать и согласовывать подключаемые модули Vim для Markdown и Pandoc. Например: я нашел плагин vim-pandoc-syntax особенно подходящим для моих нужд выделения. Тем не менее, для сворачивания Markdown я использую более общий способ сворачивания vim-markdown .

Кстати, разрешен только один аромат, разделенный точкой, например: filetype=markdown.pandoc

2. gvimтребуетBufFilePre

gvimтребуется дополнительная BufFilePreстрока в строке автокоманды для распознавания типа файла Markdown с помощью Save As… :savкоманды.

Серж Строобандт
источник
15

В Тима плагин на .md расширение работает только для README.md , потому что filetype.vim определяет так.

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown
Спартанский
источник
2
Ложь; Вы, должно быть, думаете об установке Vim по умолчанию, которая ведет себя подобным образом. Плагин Тима переопределяет его для всех файлов .md. См github.com/tpope/vim-markdown/blob/master/ftdetect/markdown.vim
corvec
7

Если вам не нравится помещать всю свою конфигурацию ~/.vimrc, вы можете создать ~/.vim/ftdetect/markdown.md(или его эквивалент в Windows) со следующим содержимым.

au BufNewFile,BufRead *.md setf markdown

ajmccluskey
источник