vimのクイックフィックス機能をどのように使用しますか?


125

私はかなり新しいVimユーザーですが、その学習曲線はかなり急です(少なくとも私にとっては)。JavaScriptLintエラーチェック用のこのvimスクリプトをインストールしました。バッファを保存すると、vimのクイックフィックスウィンドウにエラーが表示されます。

ただし、次に何をしたらよいかわかりません。すべてのエラーを「スクロール」するにはどうすればよいですか。クイックフィックス「ウィンドウ」を閉じるにはどうすればよいですか?コードを変更した後、エラーを確認するにはどうすればよいですか?

vimクイックフィックスのドキュメントを見てきましたが、コマンドの数が膨大で、必要なものが見つからないようです。任意の助けいただければ幸いです。

副次的な質問:.htmlファイルにあるコードのJavaScriptエラーをjavascriptlintでチェックする方法はありますか?

ありがとう!

回答:


148

あなたが言ったようにquickfixのための多くのコマンドがありますが、私はそれらの小さなサブセットのみを使用することがわかります:

:copen " Open the quickfix window
:ccl   " Close it
:cw    " Open it if there are "errors", close it otherwise (some people prefer this)
:cn    " Go to the next error in the window
:cp    " Go to the previous error in the window
:cnf   " Go to the first error in the next file
:.cc   " Go to error under cursor (if cursor is in quickfix window)

私はこれを:makeandと一緒に使用する傾向があるため:vimgrep、Javascript lintチェッカーにコメントすることはできませんが、これはあなたが始めるために何かを与えるはずです。

JavascriptLintの一般的な使用に関しては、私はJavaScriptプログラマではありませんが、スクリプトが「JavascriptLint」と呼ばれる関数を公開しているように見えるため、手動で呼び出す場合はを使用できます:call JavascriptLint()。ただし、ファイルのディスクコピーで機能するため、最初に保存する必要があります。コマンドラインjslがhtmlファイルで機能する場合(かつその場合のみ)、htmlファイルでを使用:call JavascriptLint()して内部JavaScriptをチェックできるはずです。あなたも行うことができます:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

自動化します。jslがhtmlファイルをサポートしていない場合(アプリケーションにパッチを適用するか、作成者に変更を依頼する場合を除いて)、それはおそらく失われた原因です...


おかげで、これらのコマンドは良い出発点です。少し遊んで、その機能に慣れる必要があります。:cnを使用してqfウィンドウのエラーに移動した場合、qfウィンドウを終了せずに自分のコードでウィンドウにジャンプできますか?エラーのある行にジャンプできますか?そして:callを使用するというあなたの提案は機能しますが、それは<script src>リンクをたどりますが、これは私が望んでいるものではありません。
hora

@hora::cnqfウィンドウを閉じるべきではありませんが、エラーを含むウィンドウに切り替わります。これは「ジャンプ」の意味ですか?Ctrl-W pまたは:wincmd pですばやく切り替えることができるため、そのようなことができます:command! CN :cn | wincmd p<CR>(テストされていません)。これ:CNにより、quickfixウィンドウから切り替えずに次のエラーに進むコマンドが提供されます。あるいは、:au BufWinEnter quickfix nmap <buffer> <Enter> :.cc | wincmd p<CR>(ここでもテストされていません)などの操作を行い、Enterを使用して、クイックフィックスウィンドウから切り替えずにエラーを選択することもできます。
DrAl 2009年

1
初心者にとって、「あなたもできる:それを自動化するための「somecodehere」」​​はそれほど意味がありません。つまり、表示されたコード行は〜/ .vimrc(Windows AFAIKでは_VIMRC)に配置する必要があり、ファイルが保存されるたびにVIMの次の起動からこのコマンドが呼び出されます。正しい?
2018年

63

クイックフィックスリスト(または、さらに言えば場所リスト)をナビゲートする最も簡単な方法はunimpairedプラグインです。

QuickFixウィンドウが埋め、されたら[q]q前後(それぞれ)QuickFixリストで行きます。 [Qそして]Q最初と最後に行く(あなただけのリストの1つのアイテムを持っている場合に特に便利です。これますが文句を言うVIM [q]q)。したがって、ワークフローは次のとおりです。

  1. クイックフィックスリストに入力するコマンドを実行します
  2. 入力[Qして最初のアイテムに移動します
  3. [qおよびで後続のアイテム(ある場合)をスクロールします]q

Syntasticを使用している場合は、クイックフィックスリストの代わりにロケーションリストが表示されます。問題ない; ちょうど使用し[L]L[l、と]l同じようインチ

unimpaired-あまりにも他の便利なマッピングの負荷を持っている[eし、]e「バブル」のラインアップとダウン、[<Space>そして]<Space>、私は誰も前にここでそれを言及していない驚いたなど、上記の空白行を挿入し、以下の それはおそらく、質問が2009年に尋ねられたにもかかわらず、2010年1月まで存在しなかったためです。


27

.vimrcファイルに次の2行を追加します。

map <C-j> :cn<CR>
map <C-k> :cp<CR>

これで、ctrl-jとctrl-kを使用してエラーをナビゲートできます。これは、標準の上下のモーションコマンドjとkを模倣しています。


1
<c-j>それは、使用するために、<NL> //最も簡単なイスト、同じ意味するので、いつかは(端末?!によって異なります)、誤ったまたは完全に動作していないです<c-n>し、<c-p>そうでない場合は代わりに//:stackoverflow.com/questions/8304421/...を
エリ

私はこのように、F8とF9を使用することにしました:noremap <F7> :cprevious<CR>noremap <F8> :cnext<CR>.vimrc
Flimm

すでに<C-j><C-k>を使用して、vim tmux navigatorvimスプリットとtmuxペインの間を移動しています。組み合わせ<C-M-j><C-M-k>代替になる可能性があります。
ポールルージュ

24

:cc 2(またはその他の番号)を使用して、クイックフィックスウィンドウの2番目のエラーにジャンプすることもできます。ナビゲート:cn:cc 4などは、問題の行にカーソルを置きます。


8

JavaScriptの構文チェックを統合する最良の方法は、Vimのロケーションリストquickfixと並行)ウィンドウを使用するSyntastic Vimプラグインを使用することです。

私のための答え書いているこの質問をして、この質問を取得する方法もそれを行う方法を説明する、プラスのソースコードの閲覧/タグリストコミュニティ主導使ってVimのためのjshint.comを(ずっといいJSLint IMOよりもある)と、 MozillaのDoctorJS(以前のjsctags)。


8

この質問が書かれたとき、たぶん、このオプションは存在しませんでした(または多分私はので、そこの私の中の何かに自分を恥ずかしいよ.vimrc、これが起こる可能)が、私は得るときQuickfix List、私はただでそれをナビゲートjし、kその後、ヒット<CR>(つまり、キーを入力してください)ファイル内のその場所にジャンプします。

次に戻るには、「ウィンドウを下に移動」するために+ Quickfix Listと入力すると、戻ってきます。CtrlW j

最後に、完了したら:q、通常のウィンドウを閉じるように、と入力します。


それが私がやりたいことですが、「変更できません、「変更可能」がオフになっています」と表示されます。
rtf 2016年

1
Enterキーを上書きした可能性があります。たとえばnmap <CR> o<Esc>、だったので、通常モードで改行を追加できました。
Taavi Ilves

6

quickfixウィンドウは、他のvimウィンドウとほとんど同じように操作されます。jは行を下に、kは行を上に、:cnは次のエラー/警告にジャンプします。

実験!


1
実験のための+1、それが私がすべてを学んだ方法のほとんどです。
hora

4

クイックウィンドウを開いたり閉じたりしてエントリ間を移動する方法に関する@DrAlのすばらしい回答に加えて、他のいくつかのクイックフィックスナビゲーションコマンドを示す画像を作成しました。

以下の3つのファイルの各グループは、たとえばvimgrepからのクイックフィックスの結果のセットを表します。cnewerとcolderは、履歴結果セットを通過するためのものです。 ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.