C ++ 14 cung cấp cho chúng tôi tùy chọn sử dụng dấu ngoặc đơn để phân tách các chữ số của chữ số lớn. Điều này phá vỡ cú pháp tô sáng của Vim.
Ví dụ, hãy xem xét chương trình C ++ 14 sau đây:
#include <stdlib.h>
int main(int argc, char** argv) {
// small numbers are fine
int normal_number = 5;
// large numbers have the correct highlighting but they're hard to visually parse
int huge_number = 1000000000;
// apostrophes help with visual parsing but mess up syntax higlighting
int huge_number_again = 1'000'000'000;
return EXIT_SUCCESS;
}
Khi tôi xem phần này trong Vim, tôi thấy phần tô sáng cú pháp sau (lưu ý rằng tôi đang sử dụng một số tập lệnh tô sáng bổ sung ):
Tôi muốn tất cả các chữ số huge_number_again
xuất hiện màu đỏ. Có một sửa đổi nào tôi có thể thực hiện đối với một trong các tệp cú pháp của mình hoặc để tôi ~/.vimrc
sửa lỗi này không?
Tôi thấy một số hỗ trợ cho C ++ 14 đã được thêm vào v7.4.923 (chữ nhị phân). Nhưng dường như không phải là dấu phân cách số: - / Các tệp C ++ mới nhất từ đây dường như chưa có.
—
Martin Tournoij
Để khắc phục nhanh, có lẽ bạn có thể thêm
—
muru
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
vào ~/.vim/syntax/cpp.vim
. (Btw, nếu đó là C ++, cstdlib
thì không , sử dụng stdlib.h
.)
Tôi chỉ nhận thấy có một vấn đề mở từ tháng 5 năm 2014 btw.
—
Martin Tournoij
@muru Điều đó dường như đã khắc phục vấn đề. Bây giờ tôi ổn với việc sử dụng hack nhanh chóng. Cảm ơn!
—
Jake
@Carpetsmoker Tôi không chắc chắn về việc kết hợp cú pháp để biết chính xác những thay đổi của tôi. Tôi nghĩ rằng nó sẽ chỉ khớp với một chữ số theo bất kỳ số chữ số hoặc dấu ngoặc đơn nào, cộng với
—
muru
ull
lông tơ, nhưng tôi không biết liệu nó có khớp với một số trường hợp không hợp lệ hay không. Và rõ ràng C ++ 14 cho phép dấu phân cách theo số bát phân, nhị phân, hex và phao và sau dấu thập phân trong số float. Đó là nhiều hơn nhiều so với tôi sẵn sàng đảm nhận.