आप विम के क्विकफ़िक्स फ़ीचर का उपयोग कैसे करते हैं?


125

मैं एक बहुत नया विम उपयोगकर्ता हूं और मैंने पाया है कि इसका सीखने की अवस्था काफी कम है (कम से कम मेरे लिए)। मैंने केवल इस विम स्क्रिप्ट को JavaScriptLint त्रुटि जाँच के लिए स्थापित किया है , जो एक बफर को सहेजने के बाद vim की क्विकफ़िक्स विंडो में त्रुटियों को दिखाता है।

हालाँकि, मुझे नहीं पता कि आगे क्या करना है .. मैं सभी त्रुटियों के माध्यम से कैसे 'स्क्रॉल' करूं? मैं क्विकफिक्स 'विंडो' को कैसे बंद करूं? अपने कोड में परिवर्तन करने के बाद मुझे त्रुटियों की जांच करने के लिए यह कैसे मिलेगा?

मैंने विम क्विकफ़िक्स डॉक्स को देखा है, लेकिन कमांड्स की मात्रा बहुत अधिक है और मुझे वह नहीं मिल रहा है जो मुझे चाहिए। किसी भी सहायता की सराहना की जाएगी।

एक पक्ष का प्रश्न: क्या कोई ऐसी कोई विधि है जो जावास्क्रिप्ट के लिए javascriptlint की जाँच करने के लिए है। कोड के लिए कोई त्रुटि नहीं है।

धन्यवाद!

जवाबों:


148

क्विकफिक्स के लिए बहुत सारी कमांड हैं जैसा कि आपने कहा है, लेकिन मुझे लगता है कि मैं केवल उनमें से एक छोटे उपसमूह का उपयोग करता हूं:

: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)

मैं के साथ इस का उपयोग करते हैं :makeऔर :vimgrep, इसलिए मैं जावास्क्रिप्ट फाहा चेकर पर टिप्पणी नहीं कर सकता, लेकिन यह आप कुछ देना चाहिए आरंभ करने के लिए।

JavascriptLint के सामान्य उपयोग के बारे में, मैं एक जावास्क्रिप्ट प्रोग्रामर नहीं हूं, लेकिन ऐसा लगता है कि स्क्रिप्ट "JavascriptLint" नामक एक फ़ंक्शन को उजागर करती है, इसलिए यदि आप इसे मैन्युअल रूप से कॉल करना चाहते हैं, तो आप उपयोग कर सकते हैं :call JavascriptLint()। हालाँकि, यह फ़ाइल की डिस्क कॉपी पर काम करता है, इसलिए इसे पहले सहेजना होगा। यदि (और केवल अगर) कमांड लाइन jslhtml फाइलों पर काम करती है, तो आपको :call JavascriptLint()आंतरिक जावास्क्रिप्ट की जांच करने के लिए HTML फाइल पर उपयोग करने में सक्षम होना चाहिए । आप भी कर सकते हैं:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

इसे स्वचालित करने के लिए। यदि आप jslhtml फ़ाइलों का समर्थन नहीं करते हैं, तो (एप्लिकेशन को पैच करने या लेखक को इसे बदलने के लिए कहने से कम), यह शायद एक खो गया कारण है ...


धन्यवाद, वे कमांड एक अच्छी शुरुआत हैं, मुझे बस थोड़ा सा खेलना होगा और काम करने की आदत डालनी होगी। अगर मैं उपयोग करता हूं: qf विंडो में किसी त्रुटि पर जाने के लिए cn, तो क्या मैं क्यूई विंडो से बाहर आए बिना अपने कोड के साथ विंडो पर कूद सकता हूं? क्या यह उस लाइन पर जा सकता है जिसमें कोई त्रुटि है? और आपके उपयोग का सुझाव: कॉल काम करता है, हालांकि यह इस प्रकार है <स्क्रिप्ट src> लिंक जो मुझे नहीं चाहिए।
होरा

@hora: :cnqf विंडो को बंद नहीं करना चाहिए, लेकिन यह त्रुटि वाली विंडो पर स्विच हो जाएगा: क्या इसका मतलब है "कूद"? आप जल्दी से Ctrl-W pया के साथ वापस स्विच कर सकते हैं :wincmd p, इसलिए आप ऐसा कर सकते हैं :command! CN :cn | wincmd p<CR>या ऐसा कुछ (अप्रयुक्त) कर सकते हैं। यह आपको एक :CNकमांड देना चाहिए जो क्विकफिक्स विंडो से बाहर निकले बिना अगली त्रुटि पर जाता है। वैकल्पिक रूप से आप ऐसा कुछ कर सकते हैं :au BufWinEnter quickfix nmap <buffer> <Enter> :.cc | wincmd p<CR>(फिर से अनटाइटेड) और क्विकफिक्स विंडो से बाहर आए बिना किसी त्रुटि का चयन करने के लिए एंटर का उपयोग करें।
DrAl

1
एक शुरुआत के लिए "आप यह भी कर सकते हैं: 'स्वचालित करने के लिए' इसे स्वचालित करने के लिए" ज्यादा मतलब नहीं है। इसका अर्थ है कि कोड की दर्शाई गई पंक्ति को ~ / .vimrc (_VIMRC पर विंडोज़ AFAIK) में रखा जाना चाहिए और VIM की अगली शुरुआत से हर बार फ़ाइल सहेजे जाने के बाद यह आदेश लागू किया जाएगा। सही?
18'18

63

सबसे आसान तरीका है QuickFix सूची (या स्थान सूची, उस बात के लिए) नेविगेट करने के लिए है प्लगइनunimpaired

एक बार क्विकफ़िक्स विंडो पॉपुलेट हो गई है, [qऔर ]qक्विकफ़िक्स सूची में आगे और पीछे (क्रमशः) जाएं। [Qऔर ]Qशुरुआत और अंत तक जाएं (जो कि विशेष रूप से आसान है यदि आपके पास सूची में केवल एक आइटम है, इससे विम की शिकायत होती है [qऔर ]q)। तो वर्कफ़्लो है:

  1. जो भी कमांड क्विकफिक्स सूची को पॉप्युलेट करती है उसे चलाएं
  2. [Qपहले आइटम पर जाने के लिए टाइप करें
  3. बाद के आइटम (यदि कोई हो) के साथ स्क्रॉल करें [qऔर]q

यदि आप Syntastic का उपयोग कर रहे हैं, तो आपको क्विकफ़िक्स सूची के बजाय स्थान सूची मिल जाएगी। कोई दिक्कत नहीं है; सिर्फ उपयोग [L, ]L, [l, और ]lएक ही तरीके से।

unimpairedअन्य आसान मैपिंग का भी भार है - [eऔर ]e"बबल" लाइनें ऊपर और नीचे, [<Space>और ]<Space>ऊपर और नीचे खाली लाइनें डालें, आदि। मुझे आश्चर्य हुआ कि पहले किसी ने भी यहां इसका उल्लेख नहीं किया था; यह शायद इसलिए है क्योंकि यह जनवरी 2010 तक मौजूद नहीं था, हालांकि यह सवाल 2009 में पूछा गया था।


27

अपनी .vimrc फ़ाइल में निम्न दो पंक्तियाँ रखें:

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

अब आप ctrl-j और ctrl-k का उपयोग करके त्रुटियों के माध्यम से नेविगेट कर सकते हैं, जो मानक डाउन और अप गति कमांड j और k की नकल करता है।


1
<c-j>कुछ समय (टर्मिनल पर निर्भर करता है?) गलत या पूरी तरह से काम नहीं कर रहा है, क्योंकि इसका मतलब है कि <NL> // सबसे आसान ist, का उपयोग करने के लिए <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 शीशे के साथ के बीच नेविगेट करने vim tmux नाविक । संयोजन <C-M-j>और <C-M-k>एक विकल्प हो सकता है।
पॉल रूजीक्स

24

:cc 2कूदने के लिए, आप इस मामले में (या किसी अन्य संख्या) का उपयोग कर सकते हैं , इस मामले में क्विकफिक्स विंडो में दूसरी त्रुटि है। आदि के साथ नेविगेट करना :cn, :cc 4कर्सर को प्रश्न पर लाइन में डाल देगा।


8

जावास्क्रिप्ट सिंटैक्स-चेकिंग को एकीकृत करने का सबसे अच्छा तरीका सिंथेटिक्स विम प्लगइन का उपयोग कर रहा है, जो विम की स्थान-सूची (जो कि क्विकफिक्स के समानांतर है ) विंडो का उपयोग कर रहा है।

मैंने इस प्रश्न के उत्तर लिखे हैं और यह प्रश्न यह समझाता है कि यह कैसे करना है, साथ ही समुदाय-संचालित jshint.com का उपयोग करके विम के लिए स्रोत-कोड ब्राउज़िंग / टैग-सूची कैसे प्राप्त करें (जो कि JSLint IMO से बेहतर है) और मोज़िला के डॉक्टरजेएस (पूर्व में jsctags )।


8

हो सकता है कि यह विकल्प तब मौजूद नहीं था जब यह प्रश्न लिखा गया था (या शायद मैं खुद को शर्मिंदा कर रहा हूं क्योंकि इसमें मेरा कुछ ऐसा है .vimrcजो ऐसा करता है) लेकिन जब मुझे एक मिलता है Quickfix List, तो मैं इसे नेविगेट करता हूं jऔर kफिर हिट करता हूं <CR>(यानी दर्ज करें कुंजी) फ़ाइल में उस स्थान पर जाने के लिए।

फिर, "एक विंडो नीचे ले जाने" के लिए Quickfix ListI टाइप Ctrl+ करने के W jलिए और मैं वापस आ गया हूं।

अंत में, जब मैं कर रहा हूँ, मैं बस टाइप करता हूँ :q, जैसे कि मैं किसी भी सामान्य विंडो को बंद करूँगा।


यही मैं करना चाहूंगा, लेकिन मुझे "बदलाव नहीं कर सकते, '' परिवर्तन बंद है"।
आरटीएफ

1
आपने संभवतः अपनी Enter कुंजी को ओवर-राइड किया है। मेरे पास उदाहरण के लिए था nmap <CR> o<Esc>, इसलिए मैं सामान्य मोड में नई लाइनें जोड़ सकता था।
तावी इल्व्स

6

क्विकफिक्स विंडो ज्यादातर किसी अन्य विम विंडो की तरह संचालित होती है: एक लाइन नीचे j, एक लाइन k,: अगली त्रुटि / चेतावनी के लिए कूदने के लिए cn।

प्रयोग!


1
प्रयोग के लिए +1, यह बहुत ज्यादा है कि मैंने सब कुछ कैसे सीखा।
होरा

4

त्वरित विंडो खोलने और बंद करने और प्रविष्टियों के बीच नेविगेट करने के तरीके के बारे में @DrAl के शानदार जवाब के अलावा, मैंने एक छवि बनाई जिसमें कुछ अन्य त्वरित फिक्स नेविगेशन कमांड हैं।

नीचे दी गई 3 फाइलों का प्रत्येक समूह क्विकफिक्स रिजल्ट्स के एक सेट का प्रतिनिधित्व करता है, जैसे कि vimgrep से। cnewer और colder ऐतिहासिक परिणाम सेटों से गुजरने के लिए हैं। यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.