C ++ 14 memberi kita pilihan untuk menggunakan tanda kutip tunggal untuk memisahkan digit literal angka besar. Ini mematahkan penyorotan sintaks Vim.
Misalnya, pertimbangkan program C ++ 14 berikut:
#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;
}
Ketika saya melihat ini di Vim, saya melihat penyorotan sintaks berikut (perhatikan bahwa saya menggunakan beberapa skrip penyorotan tambahan ):
Saya ingin semua angka huge_number_again
tampak merah. Apakah ada modifikasi yang dapat saya lakukan pada salah satu file sintaks saya atau saya ~/.vimrc
untuk memperbaikinya?
syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"
ke~/.vim/syntax/cpp.vim
. (Btw, kalau itu C ++, gunakancstdlib
, bukanstdlib.h
.)ull
bulu, tetapi saya tidak tahu apakah itu akan cocok dengan beberapa kasus yang tidak valid. Dan ternyata C ++ 14 memungkinkan pemisah dalam oktal, biner, hex literal dan mengapung dan setelah titik desimal dalam mengapung. Itu jauh lebih banyak daripada yang saya bersedia lakukan.Jawaban:
The vim-jp / vim-cpp repo termasuk perubahan ini di Juli 2016:
Jika Anda tidak ingin menggunakan repo ini, Anda dapat menambahkan baris ini ke
~/.vim/syntax/cpp.vim
.sumber