मैं विम में प्रॉम्प्ट करने के लिए "प्रेस ENTER या टाइप कमांड को जारी रखने के लिए" कैसे अक्षम कर सकता हूं?


102

क्या "प्रेस एंटर या टाइप कमांड को जारी रखने के लिए अक्षम करने का कोई तरीका है" जो किसी बाहरी कमांड को निष्पादित करने के बाद दिखाई देता है?

संपादित करें: एक वर्कअराउंड मिला: <CR>मेरे .lvimrc में शॉर्टकट के लिए एक अतिरिक्त जोड़ें ।

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

कोई बेहतर विचार?


9
विंडोज 7 पर, आपको अक्सर "स्वैप फ़ाइल खोलने में असमर्थ" त्रुटियों के कारण यह प्रॉम्प्ट मिलेगा, जो प्रिंट हो गए हैं, लेकिन आप उन्हें नहीं देखते हैं, जो प्रॉम्प्ट का कारण बनता है। समाधान set dir=$TEMPअपने vimrc में रखना है। यह अपने अस्थायी फ़ाइलों के लिए सही अस्थायी फ़ोल्डर का उपयोग करने के लिए विम बताता है। यह बदले में त्रुटियों को ठीक करता है और "प्रेस एंटर" संकेतों को हटा देता है।
लुकास

जवाबों:


76

मुझे यकीन नहीं है कि यह एक आदेश के लिए विश्व स्तर पर कैसे करें:

:silent !<command>

के बाद एक स्थान शामिल करना सुनिश्चित करें silent


3
दुर्भाग्य से मेरे लिए बहुत उपयोगी नहीं है, यह स्क्रीन को गड़बड़ कर देता है और मुझे Ctrl-L को दबाना पड़ता है ... जो कि दबाने की जगह से भी अधिक कष्टप्रद है।
जोहान कोटलिंस्की

1
मेरी grep स्क्रिप्ट के लिए काम किया!
मिकको रैनतैन 19

5
नीचे टिप्पणीकार के साथ (जिसने कमांड के अंत में अतिरिक्त <CR> जोड़ने का सुझाव दिया है), चुप का उपयोग करते समय, आप अतिरिक्त <Cl> जोड़ सकते हैं, ताकि आपको इसे मैन्युअल रूप से दबाकर न रखना पड़े। अच्छी तरह से स्क्रीन के साथ काम करता है।
विक्टर फ़राज़दगी

4
बस का उपयोग करें: मौन! आज्ञा, और फिर: redraw! के बाद - मुझे लगता है कि यह स्क्रिप्ट के कारण स्वचालित रूप से ऐसा नहीं करता है जो स्क्रीन पर उन चीजों को कर सकता है जिन्हें आप रहना चाहते हैं, उदाहरण के लिए, एक घड़ी या कुछ अन्य स्थिति की निगरानी करने वाली चीज़ ... बस एक अनुमान है
ओसीरसिगोत्रा

2
हाँ .. यह मेरे लिए भी स्क्रीन गड़बड़ कर देता है। :redraw!विकल्प यह हल करती है। डबल <cr>शायद समान है। और कम जटिल
अल्फा_989

57

एक वर्कअराउंड ज्ञात करें: <CR> मानचित्र कमांड में एक अतिरिक्त जोड़ें ।

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

2
ऐसा कभी नहीं सोचा होगा। बिल्कुल प्रतिभाशाली!
कोहनी रोबर्ट 16

1
हां, मेरे आदेश में अतिरिक्त <CR> जोड़कर चाल भी किया।
डेनियल मिसेलर

2
अविश्वसनीय रूप से सरल। यह बेहद प्रभावी है!
वेन वर्नर

28
:help hit-enter

1
मैं उत्सुक हूं कि किसी ने इस उत्तर को क्यों वोट दिया, क्योंकि :help hit-enter"एंटर दबाएं ..." पर कुछ काफी उपयोगी पृष्ठभूमि जानकारी प्रदान करता है। समझाने की परवाह?
cjs

38
प्रश्न से उत्तर: 'हिट-एन्टर की मदद' से क्या जानकारी मिलती है? मैं इसे नहीं ढूँढ सकता।
जोहान कोटलिंस्की

1
यह संभव है कि आप एक शेल से पहले "कमांड एंटर" कमांड लिख सकते हैं। <Code> shortmess </ code> जो <code> हिट-एंटर करें </ code> लिंक के तहत जानकारी उस मामले में मान्य है। हालाँकि, आपको जो प्रॉम्प्ट मिल रहा है, वह शेलिंग से है, इसलिए वेरगन का सुझाव सही है। जैसा कि <code>: help: sil: </ code> में उल्लेख किया गया है "बाहरी कमांड के लिए इसका उपयोग करते समय, इससे स्क्रीन गड़बड़ हो सकती है। उपयोग करें। CTRL-L | इसे साफ करने के लिए"। आप इसे ठीक करने के लिए अपने आदेश में redraw या Ctrl-L जोड़ सकते हैं। या बस दो रिटर्न आप पहले से कर रहे हैं।
कॉन्सपिसीस कंपाइलर

मेरे लिए, यह इस बारे में था set hl( :highlight) मैंने गलत तरीके से शॉर्टकट के रूप में उपयोग किया hlsearchजो कि वास्तविक शॉर्टकट है hls। एक बात s:)

1
@JohanKotlinskiset nomore
टिनमारिनो

19

cmdheightमेरे vimrc ( :e $MYVIMRC) में 2 से 2 पर सेट करें :

:set cmdheight=2

अधिक जानकारी यहाँ


1
यह वास्तव में लंबे खोज प्रश्नों के लिए एकदम सही है
कीथ स्माइली

18

इस तरह से मैंने इस समस्या से निपटा है कि मूक के माध्यम से एक बाहरी कार्यक्रम चलाने से स्क्रीन को टेक्स्ट-मोड विम में रखा जाता है (मेरे अनुभव में, जीवीएम इस समस्या से ग्रस्त नहीं है):

command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'

नियमित मूक कमांड के बजाय इसका उपयोग करें:

:Silent top

13

यह संभवतः vimrc फ़ाइल में एक सिंटैक्स त्रुटि है


5
यह। मैंने अपने .vimrc फ़ाइल में नीचे set numberऔर फिर set syntaxनीचे का उपयोग किया था । एक बार जब मैंने set syntaxविम को हटा दिया तो मुझे कोई संकेत नहीं मिला।
पाइपरचेस्टर

1
@piperchester यह काम किया! सुझाव के टन की कोशिश की और केवल यह काम किया। धन्यवाद :)
पॉल

मैं vim अपडेट करता हूं, समस्या हल हो गई है। लेकिन मुझे लगता है कि लोग यह :messageपता लगाने के लिए टाइप कर सकते हैं कि क्या गलत हो रहा है।
नैनो नैनो

हां। मेरे पास लाइन थी set syntax। के साथ बदल दिया set syntax=onऔर यह समस्या को ठीक करता है।
McSuperbX1

7

एंथोनी द्वारा जवाब मुझे सही जगह पर ले गया और मैं बहुत सारे संदेशों को रोकने के लिए जीवीएम को कॉन्फ़िगर करने में सक्षम था।
मैंने shortmess=aoOtIअपनी gvimrc फ़ाइल में सेट जोड़ा ।
यह आपके द्वारा लाए गए सहायता पृष्ठ में समझाया गया है :help shortmess
अक्षरों का मतलब उन संदेशों की कक्षाओं से है जिन्हें आप देखना नहीं चाहते हैं, या हिट एंटर स्टॉप से बचने के लिए अलग करना चाहते हैं ।
मैं columns=130gvimrc के साथ एक विस्तृत प्रारंभिक विंडो सेट करके इसे प्रबंधित करता हूं इसलिए कुछ संदेश इसे अतिप्रवाह करेंगे और कष्टप्रद, थकावट, हिट दर्ज करने की आवश्यकता होगी।


6

यह है कि मैं "प्रेस एंटर" के बिना मुश्किल परिदृश्यों में बाहरी कमांड चलाता हूं। इसके विपरीत :silent, मैं अभी भी कमांड आउटपुट देख सकता हूं।

कमांड लाइन

:exe ":!<command>" | redraw

लिपि / कार्य

exe ':!<command>' 
redraw

के साथ मानचित्रण <expr>

map <expr> <F5> ":exe ':!<command>'\n:redraw\<CR>"

<expr>उस के साथ मैपिंग एक फ़ंक्शन को कॉल करता है

map <expr> <F5> MyFoo()
fu! MyFoo()
    return ":exe ':!<command>' | redraw\<CR>"
endf

क्या यह किसी भी तरह से पुन: प्रयोज्य है? जब मैं F5 दबाता हूं तो यह केवल एक स्ट्रिंग<command>
अश्रुमुन

1
<command>एक वास्तविक बाहरी कमांड के साथ प्रतिस्थापित किया जाना है, जैसेmap <expr> <F5> ":exe ':!gdb'\n:redraw\<CR>"
svlasov

4

आप उपयोग कर सकते हैं:

call feedkeys(" ")

उदाहरण के लिए:

function! Interactive_Questions()
    echo "Question 1:"
    let response1 = getchar()
    echo "Question 2:"
    let response2 = getchar()

    " Do something

    " Without the next line, you would have to hit ENTER,
    " even if what is written (the questions) has no interest:
    call feedkeys(" ")
endf

इस उत्तर के लिए धन्यवाद! सूचीबद्ध कई अन्य उत्तरों के विपरीत मेरे व्यक्तिगत मामले के लिए त्वरित और आसान और वास्तव में प्रभावी है।
5

3

स्क्रीन स्पष्ट काम करता है से पहले एक redraw लाना। यहाँ मेरे पास क्या है:

exe 'ls'  
exe 'b4'  "This redraws, so the Prompt is triggered

लेकिन यह शीघ्र ट्रिगर नहीं करेगा:

exe 'ls'  
redraw  
exe 'b4'

इससे मुझे मदद मिली क्योंकि मैं सिर्फ एक प्रोग्राम के भीतर निश्चित स्थान पर प्रॉम्प्ट से छुटकारा पाने के लिए प्रोग्राम करता हूं। बस एक redrawहल जारी कर रहा है। अन्य समाधान फिट नहीं हुआ, क्योंकि मैं मूल संदेश और प्रॉम्प्ट के गायब होने के बीच उपयोगकर्ता इनपुट को स्वीकार करना चाहता था।
डैनियल एंडरसन

1

मेरे पास एक समान मुद्दा है, लेकिन जब मैं एक ही स्ट्रिंग को कई फाइलों में बदलने के लिए एक argdo चलाता हूं जैसे,

 argdo %s/something/Something/eg|update

मैं लगातार पेज डाउन करने के लिए दबा रहा था।

आप स्क्रिप्ट चलाने से पहले निम्न विकल्प सेट कर सकते हैं ताकि कई संकेतों के बजाय केवल अंतिम संकेत हो

:set nomore

यह जवाब था: :set nomoreबुरा चाटना यह अभी भी अंत में है। यह :h help hit-enter@
टेंटनी

1

मैंने अपना मामला (एक ऑटोकॉमैंड) set shortmess+=Fकिया था।

: h shortmess
F फ़ाइल को संपादित करते समय फ़ाइल की जानकारी न दें, जैसे:silent


0

यह मेरे लिए होता है अगर मैं एक ऐसी फ़ाइल सहेज रहा हूं जो एक निर्देशिका में है जहां मेरे पास निर्देशिका के लिए लिखने की अनुमति नहीं है। मैंने डायरेक्टरी पर एक चामोड 777 (मैंने पहले से ही फ़ाइल पर अनुमतियाँ लिखी थीं) और "एंटर दबाएं" संदेश दिखाई नहीं देता है।


0
  • यदि आप एक मुख्य मानचित्र का उपयोग कर रहे हैं, तो आपका जीवन आपके आदेश के अंत में कई और जोड़कर आसान हो सकता है - लेकिन आमतौर पर 2 बार अच्छी तरह से पर्याप्त है।
  • लेकिन अगर आप vim कमांड लाइन से कमांड निष्पादित कर रहे हैं। फिर यह एक तरह से मुश्किल है। आप silentअपने वास्तव में कमांड से पहले कीवर्ड जोड़ सकते हैं । यह कमांड निष्पादित होने के बाद आपको स्वचालित रूप से विम विंडो पर वापस लाएगा। लेकिन आपको अभी भी मैन्युअल redrawरूप से निष्पादित करने की आवश्यकता है क्योंकि NERD_Tree जैसी कुछ खिड़कियों को फिर से तैयार करने की आवश्यकता है।

    • इस मामले के लिए, vim help doc से निर्देशों का पालन करने का प्रयास करें:

      हिट-एंटर प्रॉम्प्ट की संख्या को कम करने के लिए:

      • 'Cmdheight' को 2 या अधिक पर सेट करें।
      • झंडे को 'शार्टमेस' में जोड़ें।
      • 'Showcmd' और / या 'शासक' रीसेट करें।
    • यह लिंक एक और रास्ता प्रदान करता है। इसे अपनी vimrc फ़ाइल में डालें

      आदेश! -नारग = १ मूक
      \ 'निष्पादित करें चुप!' ।
      \ _ | 'redraw' निष्पादित करें!
      

और फिर आप :Silent commandएक नियमित कमांड की तरह उपयोग कर सकते हैं ।


0

मेरी ओर से समाधान एक श्रृंखला श्रृंखला में अधिक बार उपयोग करनाsilent था ।

विशेष रूप से पहले, .vimrcथा:

nnoremap M :silent make\|redraw!\|cc<CR>

इसे बदल दिया गया था:

nnoremap M :silent make\|silent redraw!\|silent cc<CR>

इससे पहले, "प्रेस एंटर" हमेशा नहीं दिखाया गया, लेकिन अक्सर गुस्सा। अतिरिक्त silents ने इसे ठीक किया। (ऐसा लग रहा है silentपर की जरूरत नहीं है redraw!के रूप में :cc"प्रेस ENTER" संदेश कारण होता है।)

इस परिवर्तन में और अधिक के उत्पादन को दिखाने का दोष नहीं है :cc, इसलिए आपको अनुमान लगाना होगा कि त्रुटि क्या है। एक छोटी सी ट्वीक पर यह समस्या नहीं:

nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>

यह त्रुटि बनाता है QuickFix सूची (आउटपुट का make) स्वचालित रूप से प्रकट होता है (और, यदि कोई त्रुटि नहीं है, तो vim- जादू से गायब हो जाता है)।

जानकारी के लिए:

इस Mमानचित्रण का अभिप्राय केवल Mसामान्य-मोड में प्रेस करना है:

  • संपादन को सहेजें (जब makeसब कुछ का उपयोग किया जा रहा हो, gitवैसे भी)
  • आह्वान make
  • और पहली त्रुटि या चेतावनी पर सीधे कूदें

मेरे Makefile रों आमतौर पर इस तरह के निर्माण कर रहे हैं, कि यह केवल एक दूसरे के एक अंश लेता है।

थोड़ा ट्विकिंग के साथ इसे गैर पर लागू किया जा सकता हैC प्रकार के ट्विकिंग के साथ प्रकार के वर्कलोड पर भी :

में .vimrcजोड़ने

set efm+=#%t#%f#%l#%c#%m#

यह vimसंदेशों को व्याख्या करने की अनुमति देता है जैसे कि :cc(प्रदर्शन त्रुटि):

#E#file#line#column#message#
#W#file#line#column#message#
#I#file#line#column#message#

( जादू पर आधारित Errors, Warnings, Info vim)

उदाहरण पायथन स्क्रिप्ट के लिए इसका उपयोग कैसे करें । (क्षमा करें, यहाँ कोई प्रतिलिपि नहीं है, यह एक अलग कहानी है।)


0

यदि आपकी त्रुटि E303 के कारण है, तो फ़ाइल में एक अस्थायी निर्देशिका बनाना.vimrc इसे ठीक किया जा सकता है।

कोई भी फ़ाइल खोलने के बाद, लिखें और दर्ज करें:

:messages

यदि त्रुटियाँ हैं, तो यह शीघ्र होगा।

यदि आप E303 (Error303) "रिकवरी असंभव" के लिए स्वैप फ़ाइल खोलने में असमर्थ हैं, तो रिकवरी असंभव ", यह संकेत दे सकता है कि सिस्टम में एक स्वैप फ़ाइल (सबसे अधिक संभावना खोई हुई या गैर-मौजूद) को पुनर्प्राप्त करने का एक पुराना प्रयास है। ।

इसे ठीक करने के लिए, फ़ाइल में एक अस्थायी निर्देशिका असाइन करें .vimrc

.vimrcफ़ाइल का स्थान खोजने के लिए , यह लिखें और दर्ज करें:

$ locate .vimrc
/root/.vimrc

फ़ाइल खोलें $ vi .vimrc

इसे फ़ाइल के अंत में जोड़ें:

set directory=.,$TEMP

सहेजें और साथ बंद करें :wq

अंत में, प्रोफ़ाइल पुनः लोड करें:

$ . /etc/profile

VI के साथ कोई भी फ़ाइल खोलने का प्रयास करें। समस्या ठीक हो जाएगी।


0

पर gvim, यदि आप निर्धारित किया है guioptions+=!(जोड़ी !में guioptions), यह उसकी वजह से है। यह विकल्प ( !) बनाते हैंgvim बाहरी टर्मिनल पर कुछ कमांड निष्पादित करता है (जो अधिक सुविधाओं का समर्थन करता है, जैसे रंग और कई अन्य)।

आप इसका उपयोग करके :set guioptions-=iदेख सकते हैं कि क्या यह आपके लिए काम करता है।

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