Tôi quyết định tìm hiểu thêm về vim và làm nổi bật cú pháp của nó. Sử dụng các ví dụ cho người khác, tôi đang tạo tệp cú pháp của riêng mình cho Đánh dấu. Tôi đã thấy mkd.vim và nó cũng có vấn đề này. Sự cố của tôi nằm giữa các mục trong danh sách và làm nổi bật khối mã.Đánh dấu Vim Markdown (liệt kê các mục và xung đột khối mã)
Mã Khối definition:
- dòng đầu tiên là trống
- dòng thứ hai bắt đầu với ít nhất 4 chỗ hoặc 1 tab
- khối được kết thúc với một dòng trống
Ví dụ:
Regular text
this is code, monospaced and left untouched by markdown
another line of code
Regular Text
cú pháp Vim của tôi cho khối mã:
syn match mkdCodeBlock /\(\s\{4,}\|\t\{1,}\).*\n/ contained nextgroup=mkdCodeBlock
hi link mkdCodeBlock comment
Danh sách Unorder mục definition:
- dòng đầu tiên là trống
- dòng thứ hai bắt đầu với một [- + *] theo sau là một không gian
- danh sách được hoàn thành với một dòng trống thì một dòng bình thường (không có danh sách)
- giữa các chi tiết đơn hàng bất kỳ số dòng trống nào có thể được thêm
- một danh sách phụ được quy định bằng cách thụt lề (4 không gian hoặc 1 tab)
- một dòng văn bản bình thường sau khi một mục danh sách là bao gồm như một sự tiếp nối của danh sách mục
Ví dụ:
Regular text
- item 1
- sub item 1
- sub item 2
- item 2
this is part of item 2
so is this
- item 3, still in the same list
- sub item 1
- sub item 2
Regular text, list ends above
My Vim cú pháp cho định nghĩa danh sách unorder mục (tôi chỉ làm nổi bật [-+*]
):
syn region mkdListItem start=/\s*[-*+]\s\+/ matchgroup=pdcListText end=".*" contained nextgroup=mkdListItem,mkdListSkipNL [email protected] skipnl
syn match mkdListSkipNL /\s*\n/ contained nextgroup=mkdListItem,mkdListSkipNL skipnl
hi link mkdListItem operator
tôi không thể có được highli ghting để làm việc với hai quy tắc cuối cùng cho danh sách và với một khối mã.
Đây là một ví dụ mà phá vỡ làm nổi bật cú pháp của tôi:
Regular text
- Item 1
- Item 2
part of item 2
- these 2 line should be highlighted as a list item
- but they are highlighted as a code block
Tôi hiện không thể tìm ra cách để có được tô màu để làm việc theo cách tôi muốn nó quá
Quên để thêm một quy tắc cú pháp "toàn cầu" được sử dụng trong cả hai quy tắc được liệt kê bên dưới. Nó là để đảm bảo rằng họ bắt đầu với một dòng trống.
syn match mkdBlankLine /^\s*\n/ nextgroup=mkdCodeBlock,mkdListItem transparent
LƯU: Tôi cần phải có được rõ ràng hơn.Trong tập tin cú pháp của tôi, các quy tắc Danh sách xuất hiện trước các Quy Blockquote
Tuyệt. Làm cho tôi cuối cùng cũng muốn học vim kịch bản. :) – jop