Увімкнення виділення розмітки у Vim


138

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

Поки я спробував плагін plasticboy і плагін Тіма Попа . Плагін plasticboy спрацював нормально, але в кінці рядків було виділено пробіл, і я не зрозумів, як його вимкнути. (Це дійсно дратує, бо кожен раз, spaceколи я б'є, коли пишу, це підкреслює персонажа.)

Плагін Тіма, схоже, не дуже впливає на виділення, крім, можливо, заголовків, які використовують ###. Кодові блоки та кулі ігноруються. Я, можливо, щось там не вистачає. Я використовую .mdрозширення для моїх файлів Markdown, тому він повинен підбирати тип файлу.

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

Чи потребує будь-який із них певні кольорові схеми для роботи?


24
*.mdне є правильним розширенням для розмітки. Цей для модульних файлів. Плагін Tpope працює чудово (всі ці плагіни справно працюють). Ви повинні використовувати *.markdownрозширення
lucapette

7
@lucapette в ftdetect для плагіна Tim Папи має також включати в себе *.md, поряд з: *.markdown,*.mdown,*.mkd,*.mkdn. Плагін plasticboy автоматично виявляє лише*.mkd,*.markdown,*.mdwn
pb2q

1
З джерела плагінів plasticboy, схоже, він насправді і виявляє .md. Я зараз заблокований у цьому розширенні, тому що я використовую Scriptogr.am для свого блогу, і це єдине розширення, яке вони зараз розпізнають.
Джош граф

1
Щойно знайшли це, і це досить родзинка для ароматизованої відмітки Github
Matthew Turner

Проблеми з plasticboy / vim-markdown відкрийте питання щодо проектів, щоб розробники могли вирішити це. Я вважаю, що виділення пробільних пробілів - це хороша поведінка, оскільки подвійні пробіли генерують <br>теги, тому письменникам слід знати про це.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Відповіді:


22

Це повинно працювати, щоб вимкнути підсвічування місця в кінці рядка під час використання плагіну mkd plasticboy:

: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.


2
Це має багато сенсу. Не усвідомлював, що два простори мають значення в Маркдаун. Я думаю, що я залишаю це ввімкненим, якщо він не продовжує мене клопотати. Дякую!
Джош граф

Так, тому родзинка не починається, поки не будуть введені два пробіли.
pb2q

@ josh-Earl дивіться мої зміни щодо інших варіантів використання
пластика

308

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

:set syntax=markdown

І це спрацювало. Тому я включив наступний рядок у свій .vimrc:

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

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

BufFilePre потрібен для: sav


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
Серж Струобандт

19

Рідне підкреслення синтаксису

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

Наступний рядок .vimrcдає найкращі результати для обох vimі gvim:

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

Пояснення:

1. Вкажіть свій аромат Markdown!

Якщо ви працюєте в основному з одним ароматом Markdown (наприклад, Pandoc ), обов’язково згадайте і про це! Це дає змогу змішувати та узгоджувати як плаценти Vim, що відповідають Markdown, так і Pandoc. Наприклад: я знайшов плагін- синтаксис vim-pandoc-синтаксис особливо підходящим для моїх потреб у виділенні. Тим не менш, я використовую більш загальне vim-markdown-folding для складання 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

1
Помилковий; ви повинні думати про стандартну установку 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.