Cú pháp màu hỗn hợp trong vim


12

Tôi thường viết tài liệu bằng đan bằng cách sử dụng vim, điều đó có nghĩa là tôi có mã đánh dấu trộn với mã R. Tôi muốn có màu cú pháp R trên các đoạn R, nhưng đánh dấu hoặc không tô màu trên tất cả các đoạn khác. Đây có phải là có thể làm được? Làm sao?


3
Tôi nghĩ bạn có thể, hãy thử nhìn vào vim.wikia.com/wiki/ Từ
nobe4

5
Tùy thuộc vào plugin markdown của bạn, bạn có thể hoặc chưa hỗ trợ tô màu cú pháp của các "khối mã" được bao gồm. Trong trường hợp đầu tiên, bạn sẽ (chỉ) phải thay đổi cú pháp của plugin để nhận ra "khối R" của bạn là các khối mã hợp lệ. Trong trường hợp thứ 2, có lẽ bạn có thể truyền cảm hứng cho mình từ vimrc của Junegunn, đặc biệt là các chức năng s:syntax_includes:file_type_handler: github.com/junegunn/dotfiles/blob/master/vimrc
VanLaser

5
Đây có phải là một tệp đánh dấu xảy ra có mã R bên trong các khối mã không? Nếu vậy, bạn có thể muốn thêm R vào g:markdown_fenced_languagestrong vimrcví dụ: g: markdown_fenced_lacular = ['r'] `. Tôi giả sử bạn đang sử dụng cú pháp đánh dấu mặc định do Tim Pope cung cấp. Thông tin thêm về các ngôn ngữ có rào chắn
Peter Rincker

1
Các tệp cú pháp Vim, giống như hầu hết mọi thứ trong Vim, chỉ là một chuỗi các lệnh Ex được đặt trong một tệp. Bạn có thể bao gồm một, hai, ba hoặc nhiều như bạn muốn. Tạo một tệp cú pháp làm nổi bật một số khối là ngôn ngữ A và các khối khác là ngôn ngữ B không khó lắm (thực ra, tôi chỉ làm điều này trong một câu trả lời khác ). Tuy nhiên, tôi không hoàn toàn chắc chắn các tài liệu "đan" trông như thế nào? Đây chỉ là Markdown? Hoặc một cú pháp khác nhau?
Martin Tournoij

Câu trả lời:


2

Như Peter Rincker lưu ý , định dạng đánh dấu tiêu chuẩn của Vim đã bao gồm hỗ trợ làm nổi bật rmã trong "khối mã có rào chắn" và để bật nó, bạn chỉ cần đặt biến toàn cục với mã trong vimrc:

let g:markdown_fenced_languages = ['r']

Tuy nhiên, sau khi làm như vậy, bạn sẽ thấy rằng các khối mã đan của bạn vẫn không được tô sáng.

Điều này là do đanr sử dụng định dạng chuỗi thông tin của Pandoc để phân biệt mã R được chạy từ khối mã thông thường và đánh dấu Markdown thông thường của Vim không hỗ trợ điều này 1 .

Cách dễ nhất để khắc phục điều này là thêm thủ công một mục cú pháp bổ sung để khớp với loại khối mã này bằng cách thêm dòng sau vào ~/.vim/after/syntax/markdown.vim

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

Bạn cũng có thể xem xét việc cài đặt một plugin Vim để làm nổi bật Pandoc, có lẽ sẽ hỗ trợ việc này ra khỏi hộp.

1: Điều này thực sự không thể được coi là một vấn đề trong tệp cú pháp đánh dấu của Vim. Các cú pháp Markdown gốc không bao gồm khối mã rào ở tất cả, và CommonMark đặc tả không định nghĩa thế nào chuỗi thông tin nên được định dạng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.