我想覆蓋wq/q/w!/ w/q!到用戶定義的命令及其功能。我可以在執行時使用cppcheck:c/C++的Vim編輯器中的wq
實施例:
如果我使用:WQ退出,則命令應該這樣做特別的C/C++文件和退出的靜態代碼檢查。
請幫我解決這個問題。
在此先感謝。
我想覆蓋wq/q/w!/ w/q!到用戶定義的命令及其功能。我可以在執行時使用cppcheck:c/C++的Vim編輯器中的wq
實施例:
如果我使用:WQ退出,則命令應該這樣做特別的C/C++文件和退出的靜態代碼檢查。
請幫我解決這個問題。
在此先感謝。
Vim中內置的問題解決方案稱爲「自動命令」。
這是一種在特定時間調用命令的方式,如打開,保存或關閉緩衝區。
的完整列表
在你的情況見:help autocmd
,你應該「寫緩衝區之前」添加到您的.vimrc
以下命令
autocmd BufWritePre *.cpp,*.hpp !cppcheck %
BufWritePre
手段(也可以使用BufWrite
或BufWritePost
)*.cpp,*.hpp
表示自動命令w生病只適用於保存cpp或hpp文件。如果需要,可以添加c和h文件。%
手段cppcheck
「當前緩衝區的路徑」必須是在您的路徑你是不是重寫「W」的defaut行爲,但使用的是「鉤子」添加自定義命令。
我不會那樣做。它強制我們(實際上,只有在文件真正可編譯時才能保存) - 當我們不得不放棄當前編輯時沒有任何意義,因爲我們已經忘記的催促會議即將開始;在這種情況下保存文件是正常的進行方式。
此外,在:wq
上運行cppcheck的目的是什麼?我們如何利用這個結果?
相反,我不得不運行cppcheck的映射,但:製作爲了開拓VIM的quickfix特性(:H的quickfix)
function s:Check()
try
let save_makeprg=&makeprg
set makeprg=cppcheck
" you may have to specify other files/extensions
:make *.cpp *.hpp
finally
let &makeprg=save_makeprg
endtry
endfunction
nnoremap <buffer> <c-f7> :call <sid>Check()<cr>
<block>
function FunForQuickfix(makeprgIn, makeefmIn)
try
let save_makeprg=&makeprg
let save_makeefm=&efm
let &makeprg=a:makeprgIn
let &efm=a:makeefmIn
:wa
:make
:cw
finally
let &makeprg=save_makeprg
let &efm=save_makeefm
endtry
endfunction
function CompileAndRunTestCodeByScons()
call FunForQuickfix('scons . -j8 -u', '%f:%l:%c:\ %m,%f:%l:\ %m,build/release64/%f:%l:%c:\ %m,build/release64/%f:%l:\ %m,%f\|%l\|,build/release64/%f:%s,%m:%l:Assertion,%sExpression:\ false,scons:\ building\ terminated\ because\ of\ errors,%sError%m')
endfunction
function CppCheck()
call FunForQuickfix("cppcheck *.cpp -j 8 --enable=all", "\[%f:%l\]:\ %m")
endfunction
nmap ma :wa<CR>:call CompileAndRunTestCodeByScons()<CR>
nmap mc :wa<CR>:call CppCheck()<CR>
nmap <F3> :cp<cr>
nmap <F4> :cn<cr>
</block>
中添加此的〜/ .vimrc,然後用ma編譯代碼和mc來運行cppcheck 這段代碼是Luc Hermitte的副本,我改了它
你可能想要一些更好的東西,在vim中開發時使用cppcheck和其他檢查。
安裝並使用該vim插件:https://github.com/scrooloose/syntastic