[英]Vim syntax issue with #if 1
當我使用#if 0,#else和#endif預處理程序注釋掉我的代碼時,vim正確顯示了語法。 但是,如果我使用像#if 1這樣的序列,則應該將#else和#endif vim顯示為在注釋中#else和#endif之間的代碼,但事實並非如此。 我的vim版本是7.2.411。 我在代碼中的很多地方都使用了它們,有時會感到困惑,因為那里沒有高亮顯示。 有沒有一種方法可以啟用此功能。 謝謝您的幫助。
例如:
#include <stdio.h>
int main()
{
#if 1
printf("inside #if 1\n");
#else
printf("inside #else\n"); // <-- This part should appear in commented syntax
#endif
return 0;
}
可能您需要升級到vim 7.3+,或者至少更新C的語法文件。$ VIMRUNTIME / syntax / c.vim(對於vim 7.3)的前幾行是
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2012 May 03
使用:help synID()
下的示例,我嘗試了
:echo synIDattr(synID(line("."), col("."), 1), "name")
並獲取“ cCppInElse2”。 可能您會得到一些不同的東西。
覆蓋默認語法文件(或其他vim腳本)時,通常的建議是將其放在您自己的vimfiles目錄中。 當新文件是較新的標准發行版的一部分時,我會例外:我確實希望在升級到將來的vim版本時將其替換。
如果您正在使用
#if 1
printf("inside #if 1\n"); //This will work always and this is same as if(1){statement;}
#else
printf("inside #else\n"); //This part will never come
因為“ #if 1”將始終為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.