Showcmd के साथ कमांड इतिहास दिखा रहा है


11

set showcmdविम का उपयोग करते समय स्क्रीन की अंतिम पंक्ति में आंशिक कमांड दिखाता है। उदाहरण के लिए, कमांड टाइप करते समय नॉर्मल मोड dt.में अंतिम लाइन शो dtऔर फिर, जब आप हिट .करते हैं तो कमांड पूरा होता है और इसलिए कुछ भी नहीं दिखाया जाता है।

क्या पूर्ण कमांड दिखाने का कोई तरीका है? उदाहरण के लिए, टाइप करते समय dt.gU(, पहले dt.दिखाया जाएगा; और जब दूसरी कमांड टाइप करना शुरू किया तो पहले क्लियर हो जाएगा, ताकि अंत में केवल gU(प्रदर्शित हो।

यह उदाहरण के लिए चित्रण GIFs में उपयोगी हो सकता है; और यह जांचने के लिए कि आपने कुछ अनपेक्षित परिणाम का सामना करने के लिए क्या लिखा है।


1
एक पूर्ण आदेश क्या है? dtपता चला है क्योंकि यह वर्तमान ऑपरेटर लंबित है है। एक बार जब इसे एक प्रस्ताव दिया जाता है, तो यह अब लंबित एक ऑपरेटर नहीं है। मान लीजिए हम आगे बढ़े, और ऐसा किया dt.gU(gu)dawया नहीं। क्या वह सब "एक पूर्ण कमांड" है, या यह चार पूर्ण कमांड है, या कुछ और है?
davidlowryduda

मेरे लिए @mixedmath जो 4 कमांड के रूप में गिना जाएगा। उत्तर के दूसरे पैराग्राफ का अर्थ यह है कि मैं क्या अर्थ रखता हूं।
गोंकेलो रिबेरो

2
विम के दृष्टिकोण से, dt.gU(2 आज्ञाएँ हैं: dt. और gU(.... इसलिए जो आप वास्तव में चाहते हैं वह किसी प्रकार का कमांड इतिहास दिखाएगा (विम पहले से ही "पूर्ण कॉमेन्ड" दिखा रहा है)।
मार्टिन टूरनोइज

@Carpetsmoker, हाँ, यह वही हो सकता है जो मैं चाहता हूं। प्रश्न शीर्षक संपादित करने के लिए धन्यवाद।
गोंकोलो रिबेरो

3
मैं विम स्रोत कोड में सामान्य इतिहास पर काम कर रहा हूँ । में src/normal.cकोड कॉल clear_showcmd()कई स्थानों में ( normal_cmd(), do_pending_operator(), end_visual_mode())। मैं showcmd_bufउन बिंदुओं पर एक फ़ाइल को डंपिंग के साथ खेल रहा हूं , जो बहुत अच्छा लग रहा था, लेकिन मुझे बहुत यकीन है कि आप जो चाहते हैं वह प्राप्त नहीं कर सकते हैं जैसे कि विम स्रोत कोड को संशोधित किए बिना और इसका पुनर्निर्माण करना। बेशक, ऐसा करना आपके गिफ़्स बनाने के लिए परेशानी के लायक हो सकता है।
जॉन ओ.एम.

जवाबों:


9

मुझे नियमित विम में ऐसा करने का कोई तरीका नहीं मिला। हालांकि, यदि आप विम को पैच करने के इच्छुक हैं, तो निम्नलिखित आपके लिए काम कर सकते हैं।

बहुत ही साधारण पैच (विम-7.4.052 के खिलाफ लागू) स्क्रीन पर वास्तविक अपडेट को निष्क्रिय कर देता है जो एक सामान्य कमांड के अंत में इतिहास को साफ करता है। यह showcmd_is_clearप्रदर्शन को अपडेट करने से पहले सेट किया गया है या नहीं, यह लौटाकर करता है। (वैकल्पिक रूप से, आप अगर बयान बाहर टिप्पणी कर सकते हैं और सिर्फ एक मूल छोड़ returnलाइन। टिप्पणी : नीचे पैच बहुत अच्छी तरह से पेस्ट नहीं किया है, आप हाथ से यह लागू करने के लिए हो सकता है, हालांकि यह बस एक छोटी एक लाइनर है। टिप्पणी : मैंने वास्तविक टिप्पणी नहीं कीdisplay_showcmd() क्योंकि यह दृश्य मोड में उपयोग होने के लिए चयनित लाइनों की संख्या या संभवतः अन्य सामानों के प्रदर्शन को अद्यतन करने के लिए प्रतीत होता है। मैंने बड़े पैमाने पर इसका परीक्षण नहीं किया है।

--- src/normal.c    2015-02-14 00:21:23.286352257 -0500
+++ src/normal.c    2015-02-14 00:21:25.238352173 -0500
@@ -4029,6 +4029,7 @@
    /* Don't actually display something if there is nothing to clear. */
    if (showcmd_is_clear)
        return;
+   return;
     }

     display_showcmd()

परिणाम इस तरह दिखता है:

पैच दिखाते हुए स्क्रेनेकास्ट

ध्यान देने योग्य कुछ रोचक बातें:

  • यह शो भी सरल आंदोलनों, जैसे j, k, b, आदि
  • xआदेश वास्तव में हो जाता है dlshowcmd_buf में।
  • कमांड जो नीचे की रेखा को बदलते हैं, शॉक्ड एरिया (उदाहरण के लिए, :कमांड का उपयोग करते हुए , या इन्सर्ट मोड (कम से कम मेरे सेटअप में) दर्ज करते हैं)
  • मेरे द्वारा टाइप किए जाने के बाद कैप्चर प्रोग्राम ने कई स्ट्रोक रिकॉर्ड करना बंद कर दिया ", लेकिन मेरा मुख्य अनुक्रम मेरे लंबे रजिस्टर निर्दिष्ट यान के लिए विम विंडो में दिखाई दे रहा है।
  • कलाकारों में नहीं दिखाया गया है, लेकिन escसामान्य मोड ^[में मारना शॉक्ड एरिया में दिखाया गया है

4

जॉन समाधान के अलावा , सभी विम कीस्ट्रोक्स को दिखाने का एक और तरीका है जो -wपैरामीटर का उपयोग करके दबाया गया था जो सभी वर्णों को रिकॉर्ड करते हैं जो आप फ़ाइल में टाइप करते हैं। समस्या यह है, कि विम केवल जब आप विम से बाहर निकलते हैं, तो कीस्ट्रोक्स लिखता है। यह कैसे VimGolf काम करता है।

इसे हल करने के लिए, काना नटसुनो इस सिंगल-लाइन पैच के साथ आया , जो -wविकल्प के बफरिंग को अक्षम करता है, इसलिए आपके पास कीस्ट्रोक्स की रियलटाइम स्ट्रीम तक पहुंच है। फिर उन्हें पढ़ने की बात है (उदाहरण के लिए tail -f), पार्सिंग या आप उन्हें स्टेटसबार ( :set statusline) में प्रदर्शित करने का प्रयास कर सकते हैं ।

MacVim की ड्रयू की लाइव-स्ट्रीम-कीस्ट्रोक्स शाखा का उपयोग करके विम का एक कस्टम बिल्ड देखें, कीस्ट्रोक्स की रीयलटाइम स्ट्रीम प्राप्त करने के लिए।

स्रोत: विमप्रिंट - ड्रू नील ब्लॉग पर एक विम किस्ट्रोके पार्सर

यह उपयोगी है यदि आप वीडियो ट्यूटोरियल या GIF में विम दबाए गए कीस्ट्रोक्स प्रकट करना चाहते हैं।

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