我在XYZ中定義的頭文件中突出顯示了XYZ。但是,在使用它的地方,XYZ不會突出顯示。我將如何解決這個問題?突出顯示VIM中的#defined值
我重視的兩個屏幕截圖(見TH_SYN代碼)澄清我question-
任何指針歡迎。
我在XYZ中定義的頭文件中突出顯示了XYZ。但是,在使用它的地方,XYZ不會突出顯示。我將如何解決這個問題?突出顯示VIM中的#defined值
我重視的兩個屏幕截圖(見TH_SYN代碼)澄清我question-
任何指針歡迎。
我已經做了一個非常簡單的方法來做這個Java常量(靜態決賽),基於這樣一個事實,即所有的常量,都帶有下劃線的大寫。幾乎沒有其他標識符符合該標準。
所以一個非常簡單,快速但不是100%準確的方法是將所有大寫匹配到您定義的語法組。
編輯。加樣
在你的語言的語法文件,只是添加類似:
syn match defined "[A-Z][A-Z0-9_]*"
HiLink defined Type
你可以做HiLink到Constant
,或任何你喜歡的定義高亮組。
我認爲這是以「#define」開頭的事實爲基礎的第一個亮點。第二個沒有任何標記,vim可以用它來決定它需要被突出顯示。 Vim不會像Eclipse那樣進行深入的語法分析,它只是簡單的lexing。
謝謝..我現在更好地瞭解它如何VIM亮點 – user183442 2009-10-06 06:09:11
這聽起來像你想基於特定的常量名稱自定義突出顯示等。你可以通過使用ctags
或類似的基於常量生成標籤,然後讓vim突出顯示結果。
欲瞭解更多信息,ctags + vim上有很多帖子。見,例如
Vim and Ctags tips and tricks Vim auto-generate ctags
和其他很多的。
謝謝你的筆記。我已經嘗試過基於熒光筆的ctags,但是由於我的標籤文件很大,所以它們會使VIM變慢。我正在尋找一種類似於此處提到的函數名稱的腳本 - http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim/773392 – user183442 2009-10-03 06:42:08
沒有內置的方式來突出顯示定義而不使用標籤熒光筆。如果您只想突出顯示已定義的名稱(而不是具有相對較慢的完整標記高亮顯示的響應),則可以修改標記高亮顯示僅突出顯示已定義的名稱。
如果您使用我的tag highlighter,您可以修改mktypes.py(除非您使用Windows可執行文件版本,在這種情況下,請通過電子郵件通知我網站上的地址,然後我會爲您編譯它) :
UsedTypes = [
'ctags_c', 'ctags_d', 'ctags_e', 'ctags_f',
'ctags_g', 'ctags_k', 'ctags_m', 'ctags_p',
'ctags_s', 'ctags_t', 'ctags_u', 'ctags_v'
]
這樣:
UsedTypes = ['ctags_d']
,這將產生一個類型高亮文件只包含定義的名稱,因此它應該運行快了很多。如果你的項目中有太多定義的名字,那麼它仍然會使Vim變慢一點。
要突出顯示當前文件中定義的已定義名稱,請在讀取文件後添加一個調用Vim函數的autocmd。該功能應該是這樣的:
function! HighlightDefinedNames()
" Clear any existing defined names
syn clear DefinedName
" Run through the whole file
for l in getline('1','$')
" Look for #define
if l =~ '^\s*#\s*define\s\+'
" Find the name part of the #define
let name = substitute(l, '^\s*#\s*define\s\+\(\k\+\).*$', '\1', '')
" Highlight it as DefinedName
exe 'syn keyword DefinedName ' . name
endif
endfor
endfunction
您需要確保在colourscheme中突出顯示了DefinedName,例如,
hi DefinedName guifg=#ee82ee
(假設您使用的是GUI)。
謝謝Al..I '有時候會給這個鏡頭 – user183442 2009-10-06 06:10:55
真棒男人...我也會嘗試一下 – 2010-03-19 02:02:50
很棒..可以請你告訴我我在.vimrc中做的相同的行嗎? 謝謝。 – user183442 2009-10-06 06:12:38
更強大的匹配是'\ v \ w @<!(\ u | _ + [A-Z0-9])[A-Z0-9 _] * \ w @!',它只匹配不同的大寫單詞不是說,在其他小寫字符串中間的大寫字母序列)。 – sevko 2014-07-09 03:59:15