अधिक तेजी से विम से बाहर निकलें


124

मैं मुख्य रूप से लंबे काम सत्रों के बजाय त्वरित संपादन के लिए विम का उपयोग करता हूं। : इस संदर्भ में, मैं विशेष रूप से श्रमसाध्य छोड़ने के लिए कुंजीपटल अनुक्रम को खोजने Esc, Shift+ ;, w, q, Enter

कम से कम कीस्ट्रोक्स के साथ विम (संभवतः दस्तावेज़ को सहेजना) कैसे छोड़ें? खासकर इन्सर्ट मोड से।


50
पावर बटन सिर्फ एक क्लिक दूर है, आप जानते हैं।
रेनन

2
यदि आप कमांड मोड में हैं, तो @jasonwryan सही है - ZZ बहुत जल्दी है, लेकिन तुलना बिल्कुल सही नहीं है। आपका मुख्य अनुक्रम मानता है कि आप आवेषण मॉड में हैं। डालने के मोड से बाहर निकलने के लिए Ctrl- [Esc की तुलना में तेज है। Shift-: एक कीस्ट्रोक है - आप टाइप नहीं कर सकते हैं: अपने आप कोई भी तेज। तो आप कुछ बचाएं, लेकिन ज्यादा नहीं।
डोमिनिक क्रोनिन

2
आपको Escइन्सर्ट मोड से बाहर निकलने का उपयोग नहीं करना चाहिए , क्योंकि Escकुंजी आधुनिक कीबोर्ड पर दूसरों से बहुत दूर है। Ctrl+ का उपयोग करें ]या अपनी खुद की मानचित्रण बनाएं।
शून्य-सूचक

3
एक फ्रांसीसी कीबोर्ड प्राप्त करें - आप पारी को समाप्त कर सकते हैं।
रिच

1
void- पॉइंटर, Ctrl + [की जगह Esc + के विकल्प के रूप में Ctrl + C काम नहीं करता है?
zumalifeguard

जवाबों:


154

Shiftzz कमांड मोड में फ़ाइल को बचाता है और बाहर निकलता है।


4
क्या यह बिल्कुल शिफ्ट की जरूरत है या यह केवल Z Z(ऊपरी मामला) है? इसके अलावा, आपको इसे काम करने के लिए कमांड मोड में रहने की आवश्यकता नहीं है, जो इसे बनाएगा Esc Z Z?
बजे एक CVn

35
इसके अलावा, ESC Z Qबचत के बिना बाहर निकलने के लिए
कार्लोस कैंपड्रोस

स्ट्रॉग + zz सिर्फ गलत है। यह vim प्रक्रिया को पृष्ठभूमि में
भेजेगा

2
@ माइकलकॉर्जलिंग: जेडजेड को सिर्फ अपरकेस होने की जरूरत है।
लार्स

2
यह केवल एक फ़ाइल को बंद कर देता है। मेरे पास बहुत सारे टैब खुले हुए हैं, इसलिए इसमें टनों ज़ेड लगेगा।
फिलिप

41

ZZसामान्य मोड में वर्तमान फ़ाइल को सहेजता है यदि संशोधित और चालू विंडो / टैब को बंद या बंद कर देता है (उसी तरह :xलेकिन :wqजो फ़ाइल को संशोधित नहीं किया गया है तो भी लिखता है)।

सभी खिड़कियों, टैब और छिपे हुए बफ़र्स में सभी संशोधित फ़ाइलों को लिखने के बाद बिना शर्त बाहर निकलने के लिए, आपको आवश्यकता है :xa(यह अभी भी बाहर नहीं निकलेगा यदि कुछ फ़ाइलों को किसी कारण या किसी अन्य के लिए नहीं लिखा जा सकता)

बिना कुछ बदले बिना शर्त के बाहर निकलने के लिए: ZQ(उसी रूप में :q!)।


1
मुझे लगता है कि आपका मतलब सामान्य मोड से है। "कमांड मोड" को आसानी से कमांड-लाइन मोड के
डेविड ब्राउन

@DavidBrown, command modeपारंपरिक नाम है, लेकिन मैं मानता हूं कि normal modeकम अस्पष्ट है। मैंने उत्तर में संशोधन किया है।
स्टीफन चेज़लस

33

:x से कम एक कुंजी है :wq


11
Shift + Z Zहालांकि उतना अच्छा नहीं है !
कोडमेडिक

@CodeMedic यह सबसे दूर है और सबसे तेज़ है यदि आप मिल गए हैं nno : ;और nno ; :, हालांकि। (प्लस vno वही)। मैं स्वैप के बारे में संदिग्ध था, लेकिन आप कभी वापस नहीं जाएंगे। :nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>और :nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>विषम yap@"और इस तरह का समर्थन करते हैं।
jthill

20

बार-बार उपयोग किए जाने वाले कार्यों के लिए एक कस्टम मैपिंग बनाएं। यदि आप अक्सर विम छोड़ते हैं, तो कुछ प्रमुख स्ट्रोक के साथ एक मैपिंग बनाएं, जैसे

nnoremap <leader><leader> :xa<cr>

यदि दो बार <leader>अल्पविरामों का उपयोग करके अल्पविराम के लिए सेट किया गया है, तो let mapleader = ","विम को छोड़ने और अपने परिवर्तनों को सहेजने का एक त्वरित तरीका है। यदि आप सम्मिलित मोड में होने पर एक और कुंजी स्ट्रोक को सहेजना चाहते हैं, तो एक संगत इन्सर्ट मोड मैपिंग भी बनाएँ:

inoremap <leader><leader> <esc>:xa<cr>

लेकिन सावधान, जब आप <leaderदो बार हिट करते हैं, तो यह गलती से काफी कम हो जाएगा ।


1
पूरी तरह से उत्तर के लिए धन्यवाद, यह मुझे विम के बारे में और जानने के लिए प्रोत्साहित करता है (जिससे मैं बचता हूं)!
वीएमवी

4
@vemv, आपको दूसरे तरीके से काम करना चाहिए - किसी भी समय आपको एक ही काम एक से अधिक बार करना होगा, देखें कि क्या इसे रोकने का कोई तरीका है!
वेन वर्नर

17

जादू करने के लिए इसका उपयोग करें। केवल दो कीस्ट्रोक्स!

Ctrl+ sबचाने के लिए,

ctrl+ dबचाने और बाहर निकलने के लिए,

ctrl+ qछोड़ने के परिवर्तनों से बाहर निकलने के लिए।

1। इसे अपने ~ / .bashrc पर रखें

bind -r '\C-s'
stty -ixon

2। इसे अपने ~ / .vimrc पर रखें

inoremap <C-s> <esc>:w<cr>                 " save files
nnoremap <C-s> :w<cr>
inoremap <C-d> <esc>:wq!<cr>               " save and exit
nnoremap <C-d> :wq!<cr>
inoremap <C-q> <esc>:qa!<cr>               " quit discarding changes
nnoremap <C-q> :qa!<cr>

3। विम को पुनरारंभ करें और अधिक उत्पादक दिन प्राप्त करें!


2
बचाने के लिए CTRL + D / CTRL + Q का उपयोग क्यों करें, बाहर निकलने के लिए और सिर्फ ZZ और ZQ के लिए नहीं?
इवान कैरोल

हाय इवान, ctrl + d / ctrl + q को बस दो कीस्ट्रोक चाहिए, जबकि ZZ और ZQ को तीन कीस्ट्रोक चाहिए। Shift + z + z / Shift + q + q। यदि हम अक्सर ऐसा करते हैं तो एक बचत कुंजी महत्वपूर्ण है। इसके अलावा हमने शॉर्टकट बचाने के लिए ctrl + s के साथ उठाया, मुझे लगता है कि यह ZZ या ZQ के बजाय अधिक सहज है।
ब्रेन 90

3
मैंने हमेशा ZQ को खतरनाक माना है। आप ZQ को बचाने के लिए नहीं मारने का इरादा कर सकते हैं, लेकिन अगर आपने गलती से Z को दो बार मारा है तो आप गए हैं और आपकी फाइल को बिना मतलब के बचाया है।
कीथ डेवेन्स

1
यदि आप एक मैक पर हैं तो ~ / .bash_profile का उपयोग करें। और इसे स्रोत के लिए याद रखें।
स्नोक्रैश

16

कैसे के बारे में सिर्फ Q'छोड़ो' के लिए?

यह केवल एक स्थानांतरित कीस्ट्रोके (यानी Shiftऔर Q) की आवश्यकता होगी । यह एक महत्वपूर्ण संयोजन भी है जिसे मैं शायद ही कभी दुर्घटना से प्रभावित करता हूं।

डिफ़ॉल्ट रूप से, Q को मैप करें switch to "Ex" mode। अगर आपको "Ex" मोड बेकार है (या कष्टप्रद) जैसा कि मैं करता हूं, तो आप इसके डिफ़ॉल्ट फ़ंक्शन को बिल्कुल भी याद नहीं करेंगे।

यहाँ मैं अपनी .vimrcफ़ाइल में क्या है :

" allow quit via single keypress (Q)
map Q :qa<CR>

यदि आपके पास सहेजे गए बफ़र्स हैं, तो यह बाहर निकलने से पहले आपको संकेत देगा।


किसी तरह मेरे VIM Q में पहले से ही :qडिफ़ॉल्ट रूप से मैप किया गया था । पारितोषिक के लिए धन्यवाद।
user13107

7

यहाँ VIM के लिए एक धोखा पत्र है

धोखा-पत्र के लिए विम

To quit the vi editor without saving any changes you've made:

If you are currently in insert or append mode, press Esc. 

Press  :  (colon). The cursor should reappear at the lower left corner of the screen beside a colon prompt. 

Enter the following:
  q!
This will quit the editor, and all changes you have made to the document will be lost.

कुछ और ::

फाइल को बंद करना और सहेजना

When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.
Quitting and Saving a File

The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w  to save your file but not quit vi (this is good to do periodically in
    case of machine crash!).
:q  to quit if you haven't made any edits.
:wq to quit and save edits (basically the same as ZZ).
Quitting without Saving Edits

Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! reads the original file back in so that you can start over.
:q! wipes out all edits and allows you to exit from vi.

अंतिम 2 को "पिछली बार फ़ाइल सहेजे जाने के बाद से जोड़ना चाहिए" ... यह "स्पष्ट" है, लेकिन एक शुरुआत "महान को समझ सकता है, क्योंकि मैंने vi खोला है", और पता चलता है कि यदि वे सत्र के दौरान बच गए, तो: " क्ष! " मूल फ़ाइल को पुनर्प्राप्त नहीं करेगा, और न ही ": ई!"। यह केवल उन संशोधनों को छोड़ देगा जो पिछली बार फ़ाइल खोले जाने या सहेजे जाने के बाद से निकले (जो भी नवीनतम हो)।
ओलिवियर दुलैक

3

मेरा सरल और सुविधाजनक उपाय है, विम से बचाना और बचाना -

Ctrl+ Xशॉर्टकट।

जूट इस कोड को .vimrcफाइल में जोड़ें :

"Fast quit and save from normal and insert mode
:map <C-X> <ESC>:x<CR>
:imap <C-X> <ESC>:x<CR>

1
अच्छा लगा, लेकिन <C-Q>मैप्पेबल क्यों नहीं है?
फ्राइडेरब्लुमेले

2

प्रयत्न, कोशिश

nno : ;
nno ; :
vno : ;
vno ; :

यदि आप fFtT का उपयोग करते हैं तो यह कुछ उपयोग करने में सक्षम हो जाएगा, लेकिन अब छोड़ने की ;xजरूरत ;qनहीं है , तो बचाने के लिए। साथ ही, बाकी सब भी जल्दी हो जाता है।

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