3
我正在研究一個小的vim插件,它應該在光標空閒後突出顯示當前單詞出現的位置。 我有一個重點部分,我需要的是檢查當前單詞是否不是C/C++關鍵字。Vim腳本:檢查當前單詞是否爲C/C++關鍵字
我正在研究一個小的vim插件,它應該在光標空閒後突出顯示當前單詞出現的位置。 我有一個重點部分,我需要的是檢查當前單詞是否不是C/C++關鍵字。Vim腳本:檢查當前單詞是否爲C/C++關鍵字
您可以根據當前語法突出顯示腳本來執行此操作。再說了,這個函數返回如果你的光標在一些訪問修飾符(public
,protected
等),或一些C++類型(比如,bool
等):
function! IsCppAccessOrType()
return match(synIDattr(synID(line("."), col("."), 1), "name"), '\v\CcppAccess|cppType') >= 0
endfunction
但是,再說一次,這將完全取決於當前語法腳本。上面的例子取決於Vim 7.3提供的標準syntax/cpp.vim
。
順便說一句,有非常有用的技巧來處理語法高亮顯示的東西:
" Show syntax highlighting groups for word under cursor
nnoremap <silent> <F10> :call <SID>SynStack()<CR>
function! <SID>SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
添加到您的vimrc
,而當你按下F10,語法項目棧會回聲(詳見:help synstack
)。
我發現這個把戲在http://vimbits.com的某處。
非常感謝:) 似乎synID對於所有可識別的關鍵字都返回非零值,我需要檢查的是: 'synID(line(「。」),col(「。」),1 )!= 0' 列不需要-1。 – 2013-02-22 07:26:08
很高興幫助:)而且,你說得對,列'-1'來自自動完成腳本,它需要在那裏處理一個點。我已經從答案中刪除了它,謝謝你的通知。 – 2013-02-22 07:55:29