wq/q/w!/w/q! をオーバーライドしたい ユーザー定義コマンドとその機能。
例 :
:wq を使用して終了すると、コマンドはその特定の c/c++ ファイルの静的コード チェックを実行して終了する必要があります。
この場合、私を助けてください。
前もって感謝します。
あなたの問題に対する組み込みのソリューションは、Vim では「自動コマンド」と呼ばれます。
これは、バッファを開く、保存する、または閉じるなど、特定の時間にコマンドを呼び出す方法です。
:help autocmd
完全なリストについては、を参照してください
あなたの場合、.vimrc
次のコマンドを追加する必要があります
autocmd BufWritePre *.cpp,*.hpp !cppcheck %
BufWritePre
BufWrite
「バッファを書き込む前」を意味します (またはも使用できますBufWritePost
) *.cpp,*.hpp
これは、cpp または hpp ファイルを保存するときにのみ auto コマンドが適用されることを意味します。必要に応じて、c および h ファイルを追加できます。 %
「現在のバッファのパス」を意味しますcppcheck
あなたのパスにある必要があります「w」のデフォルトの動作をオーバーライドしていませんが、「フック」を使用してカスタム コマンドを追加しています。
私はそれをしません。ファイルが実際にコンパイル可能である場合にのみ保存する必要があります (実際には、ファイルを保存する必要があります)。これは、忘れていた緊急の会議が始まろうとしているために現在の編集を中止しなければならない場合には意味がありません。そのような状況でファイルを保存するのが通常の進め方です。
さらに、で cppcheck を実行する目的は何:wq
ですか? その結果をどのように利用できるでしょうか。
代わりに、cppcheck を実行するマッピングが必要ですが、vim のクイックフィックス機能を利用するために :make を使用します (:h クイックフィックス)。
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>
vim での開発中には、cppcheck やその他のチェックを使用して、さらに良いことが必要になる場合があります。
その vim プラグインをインストールして使用します: https://github.com/scrooloose/syntastic
<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 からコピーしたもので、変更します