Włączanie podświetlania Markdown w Vimie

138

Używam Vima w terminalu na moim MacBooku Air z OS X Lion i nie mogę znaleźć dobrej wtyczki do podświetlania składni Markdown.

Do tej pory wypróbowałem wtyczkę plasticboy i wtyczkę Tima Pope'a . Wtyczka plasticboy działała dobrze, ale powodowała podświetlanie białych znaków na końcu linii i nie wymyśliłem, jak to wyłączyć. (To naprawdę denerwujące, ponieważ za każdym razem, spacegdy piszę, uderzam , podkreśla to postać.)

Wtyczka Tima nie wydawała się robić zbyt wiele w zakresie podświetlania, poza może używanymi nagłówkami ###. Bloki kodu i punktory są ignorowane. Może coś mi tam brakuje. Używam .mdrozszerzenia w moich plikach Markdown, więc powinien pobierać typ pliku.

Widziałem również odniesienie do Vima 7.3 z wbudowaną obsługą Markdown, ale bez jednej z tych dwóch wtyczek nie dostaję żadnego podświetlenia.

Czy któryś z nich wymaga określonych schematów kolorów do działania?

Josh Earl
źródło
24
*.mdnie jest odpowiednim rozszerzeniem do przeceny. Ten jest przeznaczony dla plików modula. Wtyczka Tpope działa dobrze (wszystkie te wtyczki działają dobrze) Powinieneś użyć *.markdownrozszerzenia
lucapette
7
@lucapette się ftdetect dla wtyczki Tim Papieża ma także *.md, wraz z: *.markdown,*.mdown,*.mkd,*.mkdn. Wtyczka Plasticboy automatycznie wykrywa tylko*.mkd,*.markdown,*.mdwn
pb2q
1
Ze źródła wtyczki Plasticboy wygląda na to, że faktycznie to wykrywa .md. Na razie jestem zamknięty w tym rozszerzeniu, ponieważ używam Scriptogr.am na moim blogu i jest to jedyne rozszerzenie, które obecnie rozpoznają.
Josh Earl
1
Właśnie to znalazłem i jest całkiem niezłe, jeśli chodzi o przecenę
Matthew Turner,
W przypadku problemów z plasticboy / vim-markdown , otwórz problemy dotyczące projektów, aby programiści mogli je rozwiązać. Uważam, że podkreślanie końcowych białych spacji jest dobrym zachowaniem, ponieważ podwójne spacje generują <br>tagi, więc pisarze powinni być tego świadomi.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

22

Powinno to działać, aby wyłączyć podświetlanie spacji na końcu linii podczas korzystania z wtyczki plasticboy mkd:

:syn clear mkdLineBreak

Możesz to zrobić autocmdw przypadku niezbędnych rozszerzeń plików, aby nie trzeba było tego robić za każdym razem, gdy ładujesz plik przeceny.

Zauważ, że to szczególne wyróżnienie istnieje, ponieważ Markdown traktuje linie kończące się 2 lub więcej znakami spacji specjalnie przez wstawianie a <br>, więc jest przydatne.

Wtyczka plasticboy używa TODOpodświetlenia dla tej reguły, która jest trochę za duża, ponieważ została zaprojektowana tak, aby domyślnie była naprawdę jaskrawa - żółte tło - aby się wyróżniać. Możesz uczynić to mniej rzucającym się w oczy, zmieniając tę highlightzasadę. Jednym z szybkich sposobów na zrobienie tego może być:

:hi link mkdLineBreak Underlined

Teraz te spacje na końcu linii pojawią się jako podkreślone. Spróbuj połączyć się z innymi highlightgrupami, aby znaleźć coś, co może Ci się bardziej spodobać. Zamiast używać link, możesz uzyskać jeszcze bardziej szczegółowe informacje o tych odstępach na końcu linii: na przykład możesz określić, że mają one być tylko nieco jaśniejsze / ciemniejsze niż normalne tło, używając własnego highlightpolecenia, określając niestandardowe ctermfg , ctermbg , guifg , ustawienia guibg .

Jak wyżej, możesz autocmdto zrobić, aby zastosować swoje określone ustawienia.

Aby uzyskać więcej informacji o highlightgrupach linków , wpisz :help group-name:, a zobaczysz listę grup, które można połączyć, a które same powinny być wyświetlane przy użyciu ich aktualnych highlightreguł. Również: :help highlight.

pb2q
źródło
2
To ma sens. Nie zdawałem sobie sprawy, że dwie spacje mają znaczenie w Markdown. Myślę, że zostawię to włączone, chyba że będzie mi przeszkadzać. Dzięki!
Josh Earl
Tak, dlatego podświetlenie nie pojawia się, dopóki nie zostaną wprowadzone 2 spacje.
pb2q
@ josh-Earl zobacz moje zmiany, aby uzyskać więcej alternatyw podczas korzystania z wtyczki
Plasticboy
308

O natywnym podświetleniu składni dla markdown Myślę, że .markdowndomyślnie działa tylko dla plików z rozszerzeniem .
Miałem problemy z podświetlaniem składni markdown dla moich .mdplików.
Próbowałem:

:set syntax=markdown

I zadziałało. Więc umieściłem następujący wiersz w moim .vimrc:

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

Teraz mój vim ma podświetlanie składni dla moich .mdplików.

BufFilePre jest potrzebny dla: sav

PutzKipa
źródło
13
Dla każdego, kto to czyta: tak, działa i jest znacznie prostszym rozwiązaniem problemu niż instalacja wtyczki. Szybki sposób na zrobienie tego z wiersza poleceń: echo "au BufRead, BufNewFile * .md set filetype = markdown" >> .vimrc
RobinLovelace
11
Wydaje mi się, że to powinna być akceptowana odpowiedź.
Enrico Campidoglio
4
@SamStoelinga To nie jest błąd, .mdjest również używany przez Modulę. Wykrywanie, którego użyć, wymagałoby zaawansowanej heurystyki.
nyuszika7h
8
Od wersji Vim 7.4.480 *.mdpliki są domyślnie rozpoznawane jako Markdown.
fwalch
1
Poprawne, ale niekompletne. Aby to działało równo z Save As… :savpoleceniem, należy przedłużyć autokomendę do BufFilePre:autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Serge Stroobandt
19

Natywne podświetlanie składni

Natywne podświetlanie składni dla języka Markdown działa domyślnie tylko w przypadku .markdownrozszerzenia pliku.

Poniższy wiersz .vimrcdaje najlepsze wyniki dla obu vimi gvim:

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

Wyjaśnienie:

1. Określ swój smak Markdown!

Jeśli pracujesz głównie z jednym smakiem Markdown (np. Pandoc ), pamiętaj, aby o tym również wspomnieć! Dzięki temu możliwe jest miksowanie i dopasowywanie wtyczek Vima specyficznych dla Markdown i Pandoc. Na przykład: Uważam, że wtyczka vim-pandoc-syntax jest szczególnie odpowiednia dla moich potrzeb związanych z podświetlaniem. Niemniej jednak, używam bardziej ogólnego foldowania na vim-markdown do foldowania Markdown.

Nawiasem mówiąc, dozwolony jest tylko jeden smak oddzielony kropką, np .: filetype=markdown.pandoc

2. gvimwymagaBufFilePre

gvimwymaga dodatkowego BufFilePrewiersza autocommand do rozpoznawania typu pliku Markdown za pomocą Save As… :savpolecenia.

Serge Stroobandt
źródło
15

W Tim plugin do .md NumerKopiiZapasowej rozszerzenie działa tylko dla README.md ponieważ filetype.vim określa tak.

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown
spartański
źródło
1
Fałszywe; musisz myśleć o domyślnej instalacji Vima, która zachowuje się w ten sposób. Wtyczka Tima zastępuje ją dla wszystkich plików .md. Zobacz github.com/tpope/vim-markdown/blob/master/ftdetect/markdown.vim
corvec
7

Jeśli nie lubisz umieszczać całej swojej konfiguracji ~/.vimrc, możesz utworzyć ~/.vim/ftdetect/markdown.md(lub jej odpowiednik w systemie Windows) z następującą zawartością.

au BufNewFile,BufRead *.md setf markdown

ajmccluskey
źródło