簡體   English   中英

#if 1的Vim語法問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM