2011-08-08 19 views

回答

6

Vim中內置的問題解決方案稱爲「自動命令」。

這是一種在特定時間調用命令的方式,如打開,保存或關閉緩衝區。

的完整列表

在你的情況見:help autocmd,你應該「寫緩衝區之前」添加到您的.vimrc以下命令

autocmd BufWritePre *.cpp,*.hpp !cppcheck %

  • BufWritePre手段(也可以使用BufWriteBufWritePost
  • *.cpp,*.hpp表示自動命令w生病只適用於保存cpp或hpp文件。如果需要,可以添加c和h文件。
  • %手段
  • cppcheck「當前緩衝區的路徑」必須是在您的路徑

你是不是重寫「W」的defaut行爲,但使用的是「鉤子」添加自定義命令。

3

我不會那樣做。它強制我們(實際上,只有在文件真正可編譯時才能保存) - 當我們不得不放棄當前編輯時沒有任何意義,因爲我們已經忘記的催促會議即將開始;在這種情況下保存文件是正常的進行方式。

此外,在: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> 
0
<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的副本,我改了它

相關問題