Vim'de karışık renk sözdizimi


12

Sık sık vim kullanarak knitr belgeleri yazıyorum , bu da R kodu ile karışık markdown kodu var demektir. R parçaları üzerinde R sözdizimi renklendirmek istiyorum, ancak diğer tüm parçalarda işaretleme veya renklendirme yok. Bu yapılabilir mi? Nasıl?



5
Markdown eklentinize bağlı olarak, dahil edilen "kod bloklarının" sözdizimi renklendirmesini zaten destekleyebilir veya desteklemeyebilirsiniz. İlk durumda, "R yığınlarını" geçerli kod blokları olarak tanımak için eklentinin sözdizimini değiştirmeniz gerekir. 2 durumda, belki de, Junegunn en vimrc özellikle fonksiyonlarını kendi kendine telkin edebilir s:syntax_includeve s:file_type_handler: github.com/junegunn/dotfiles/blob/master/vimrc
VanLaser

5
Bu kod blokları içinde R kodu olan bir işaretleme dosyası mı? Eğer öyleyse, R'nizi eklemek g:markdown_fenced_languagesiçin vimrcörneğin g: markdown_fenced_languages ​​= ['r'] `. Tim Pope tarafından sağlanan varsayılan işaretleme sözdizimini kullandığınızı varsayıyorum . Çitlerle çevrili diller hakkında daha fazla bilgi
Peter Rincker

1
Vim sözdizimi dosyaları, Vim'deki çoğu şey gibi, bir dosyaya yerleştirilen bir dizi Ex komutudur. Bir, iki, üç veya istediğiniz kadar ekleyebilirsiniz. Bazı blokları A dili ve diğer blokları B dili olarak vurgulayan bir sözdizimi dosyası oluşturmak o kadar da zor değildir (aslında, bunu başka bir cevapta yaptım ). Ancak, "knitr" belgelerinin neye benzediğinden tam olarak emin değilim? Bu sadece Markdown mu? Yoksa farklı bir sözdizimi mi?
Martin Tournoij

Yanıtlar:


2

As Peter Rincker notları , biçimlendirme Vim'ın standart markdown zaten vurgulayarak için destek içerir r, bir "çit kod bloğu" içinde kod ve etkinleştirmek için, sadece kod ile küresel değişkeni ayarlamak zorunda vimrc:

let g:markdown_fenced_languages = ['r']

Ancak, bunu yaptıktan sonra, knitr kod bloklarınızın hala vurgulanmadığını göreceksiniz.

Bunun nedeni knitr'ın normal kod bloğundan çalıştırılacak R kodunu ayırmak için Pandoc'un bilgi dizelerini biçimlendirmesini kullanması ve Vim'in düzenli Markdown vurgulamasının bunu desteklememesi 1 .

Bunu düzeltmenin en kolay yolu, aşağıdaki satırı ekleyerek bu tür kod bloğuyla eşleşmesi için manuel olarak fazladan bir sözdizimi öğesi eklemektir. ~/.vim/after/syntax/markdown.vim

syntax region markdownHighlightr matchgroup=markdownCodeDelimiter start=/^\s*```{r}.*$/ end=/^\s*```\ze\s*$/ keepend contains=@markdownHighlightr

Pandoc vurgulama için bunu kutudan çıkardığı tahmin edilen bir Vim eklentisi de yüklemeyi düşünebilirsiniz.

1: Bu gerçekten Vim'in işaretleme sözdizimi dosyasında bir sorun olarak kabul edilemez. Orijinal Markdown sözdizimi hiç kod blokları çit içerir etmez ve CommonMark Spec bilgi dizeleri nasıl biçimlendirilmesi gerektiğini tanımlamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.