작은 따옴표로 구분 된 숫자 리터럴의 Vim 구문 강조


9

C ++ 14는 작은 따옴표를 사용하여 큰 숫자 리터럴의 숫자를 구분하는 옵션을 제공했습니다. 이로 인해 Vim의 구문 강조가 중단됩니다.

예를 들어, 다음 C ++ 14 프로그램을 고려하십시오.

#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;
}

Vim에서 이것을 볼 때 다음과 같은 구문 강조가 표시됩니다 ( 추가 강조 스크립트를 사용하고 있음에 유의하십시오 ).

위에서 설명한 프로그램에 대한 Vim 구문 강조

모든 숫자 huge_number_again가 빨간색으로 나타나기를 원합니다 . 구문 파일 중 하나 ~/.vimrc를 수정 하거나 이를 수정하기 위해 수정할 수 있습니까?


C ++ 14에 대한 지원이 v7.4.923 (이진 리터럴)에 추가 된 것으로 보입니다. 하지만 숫자 분리기는 것 같다 : - / 최신 C ++ 파일을 여기에서이 또한 아직 그것을 가지고하지 않는 것 같습니다.
Martin Tournoij

4
빠른 수정을 위해, 당신은 아마 추가 할 수 있습니다 syn match cNumber display contained "\d\(\d\|'\)*\(u\=l\{0,2}\|ll\=u\)\>"~/.vim/syntax/cpp.vim. (Btw, C ++ 인 경우 cstdlib, not을 사용하십시오 stdlib.h.)
muru

3
방금 2014 년 5 월 btw 이후 공개 된 문제 가 있음을 알게되었습니다 .
Martin Tournoij

@muru 문제를 해결 한 것 같습니다. 지금은 빠른 해킹을 사용하는 것이 좋습니다. 감사!
Jake

2
@Carpetsmoker 내 변경 사항을 정확히 알기 위해 구문 일치를 확신하지 못합니다. 나는 그것이 숫자와 작은 따옴표, 그리고 ull보풀을 따르는 숫자와 일치 할 것이라고 생각 하지만, 잘못된 경우와 일치하는지 모르겠습니다. 그리고 분명히 C ++ 14는 8 진수, 2 진수, 16 진수 리터럴 및 부동 소수점, 부동 소수점 소수점 이후의 구분 기호를 허용합니다. 그것은 내가 기꺼이 받아들이는 것보다 훨씬 더 많은 것입니다.
muru

답변:


4

VIM-JP / VIM-CPP의 REPO 포함 이 변경 2016년 7월의를 :

syn match   cNumber     display contained "\d\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
syn match   cNumber     display contained "0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
syn match   cNumber     display contained "0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>"

이 리포지를 사용하지 않으려면이 행을에 추가 할 수 있습니다 ~/.vim/syntax/cpp.vim.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.