簡體   English   中英

Vim語法不正確匹配

[英]Vim syntax not matching properly

我有一個快速的vim問題。 在給定類型的語法文件中,我有:

if exists("b:current_syntax")
    finish
endif

syntax keyword AssemblyInstruction ADD SUB MUL DIV
syntax keyword AssemblyInstruction LDR STR GET PUT

syntax match AssemblyComment /\v;.*$/
syntax match AssemblyRegister /\v[rR]\d+/

highlight def link AssemblyInstruction Function
highlight def link AssemblyComment Comment
highlight def link AssemblyRegister Type

let b:current_syntax="asm"

當我set syntax=asm它“正確”突出顯示了ADD SUB MUL和DIV(盡管它似乎是對預處理器而不是函數使用了突出顯示),並且它得到的注釋正確。 但是,涉及LDR STR GET PUT時,根本不會突出顯示它們。 寄存器也不突出顯示。

我的語法文件怎么了? (它位於.vim / syntax中,但我也嘗試將其復制到.vim / after / syntax中無濟於事)

我覺得

if exists("b:current_syntax")
    finish
endif

的意思是,如果存在變量b:current_syntax ,則完成操作,不執行任何操作。 因此,如果此變量已被允許,它將不會執行任何操作。 可能會從其他地方讀取asm的原始vim語法文件。 嘗試:verbose syntax以查看已使用語法設置的內容,以及:set rtp? 到搜索運行時文件的目錄列表。

如果您想通過將文件放在.vim/after/syntax來“覆蓋” .vim/after/syntax ,則可以刪除if語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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