2

wq/q/w!/w/q! をオーバーライドしたい ユーザー定義コマンドとその機能。

例 :

:wq を使用して終了すると、コマンドはその特定の c/c++ ファイルの静的コード チェックを実行して終了する必要があります。

この場合、私を助けてください。

前もって感謝します。

4

4 に答える 4

6

あなたの問題に対する組み込みのソリューションは、Vim では「自動コマンド」と呼ばれます。

これは、バッファを開く、保存する、または閉じるなど、特定の時間にコマンドを呼び出す方法です。

:help autocmd完全なリストについては、を参照してください

あなたの場合、.vimrc次のコマンドを追加する必要があります

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

  • BufWritePreBufWrite「バッファを書き込む前」を意味します (またはも使用できますBufWritePost)
  • *.cpp,*.hppこれは、cpp または hpp ファイルを保存するときにのみ auto コマンドが適用されることを意味します。必要に応じて、c および h ファイルを追加できます。
  • %「現在のバッファのパス」を意味します
  • cppcheckあなたのパスにある必要があります

「w」のデフォルトの動作をオーバーライドしていませんが、「フック」を使用してカスタム コマンドを追加しています。

于 2011-08-08T12:22:01.273 に答える
3

私はそれをしません。ファイルが実際にコンパイル可能である場合にのみ保存する必要があります (実際には、ファイルを保存する必要があります)。これは、忘れていた緊急の会議が始まろうとしているために現在の編集を中止しなければならない場合には意味がありません。そのような状況でファイルを保存するのが通常の進め方です。

さらに、で 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>
于 2011-08-08T14:48:03.650 に答える
0

vim での開発中には、cppcheck やその他のチェックを使用して、さらに良いことが必要になる場合があります。

その vim プラグインをインストールして使用します: https://github.com/scrooloose/syntastic

于 2015-06-23T15:45:07.830 に答える
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 からコピーしたもので、変更します

于 2013-03-03T16:45:46.327 に答える