Vim'den daha hızlı çık


124

Vim'i çoğunlukla uzun çalışma oturumları yerine hızlı düzenlemeler için kullanıyorum. : Bu anlamda, özellikle zahmetli bırakmaya yönelik klavye düzenini buldum Esc, Shift+ ;, w, q, Enter.

En az tuşa basarak Vim'den (muhtemelen belgeyi kaydederek) nasıl çıkabilirsiniz? Özellikle de Ekle modundan.


50
Güç düğmesi sadece bir tık ötede, biliyorsun.
Renan,

2
@ jasonwryan haklı - Komut modundaysanız ZZ oldukça hızlı, ancak karşılaştırma oldukça doğru değil. Anahtar diziniz, insert modda olduğunuzu varsayar. Ekleme modundan çıkmak için Ctrl- [Esc'den daha hızlıdır. ÜstKrkt-: bir tuş vuruşudur - yazamazsınız: kendiliğinden daha hızlı. Demek biraz kurtarıyorsun ama fazla değil.
Dominic Cronin

2
Anahtar, modern klavyelerde diğerlerinden uzak Escolduğu için ekleme modundan çıkmak için kullanmamalısınız Esc. Ctrl+ ]Tuşunu kullanın veya kendi eşlemenizi oluşturun.
void-pointer

3
Fransızca bir klavye alın - geçişi ortadan kaldırabilirsiniz.
Zengin

1
void-pointer, Ctrl + C, Ctrl + [yerine Esc yerine kullanılır mı?
zumalifeguard

Yanıtlar:


154

Shiftzz komut modunda dosyayı kaydeder ve çıkar.


4
Bu kesinlikle Shift'e mi ihtiyaç duyuyor yoksa basit mi Z Z(büyük harf)? Ayrıca, çalışması için komut modunda olmanıza gerek yok, ki hangisi olacak Esc Z Z?
26'da

35
Ayrıca, ESC Z Qkaydetmeden çıkmak için
Carlos Campderrós

Strg + zz sadece yanlıştır. Vim sürecini arka plana gönderecek
hek2mgl

2
@ MichaelKjörling: ZZ'nin büyük harf olması gerekiyor.
LarsH

2
Ancak bu yalnızca bir dosyayı kapatır. Çok fazla sekme açtım, bu yüzden tonlarca Z alacak.
Philip

41

ZZModifiye ve çıkışlar veya geçerli bir pencere / sekme kapatır (aynı ise normal modda mevcut dosyayı kaydeder :xancak :wqo değiştirilmedi bile dosyasındaki yazacağı).

Değiştirilen tüm dosyaları tüm pencerelerde, sekmelerde ve gizli arabelleklerde yazdıktan sonra koşulsuz olarak çıkmak için ihtiyacınız var :xa(bazı dosyalar bir nedenle veya başka bir nedenden dolayı yazılamazsa yine de çıkmayacak)

Hiçbir şeyi değiştirmeden koşulsuz olarak çıkmak için: ZQ(aynı :q!).


1
Bence normal mod demek istiyorsun. "komut modu" kolayca komut satırı modu
David Brown

@DavidBrown, command modegeleneksel addır, ancak normal modedaha az belirsiz olduğuna katılıyorum . Cevabı değiştirdim.
Stéphane Chazelas

33

:x bir anahtar daha az :wq


11
Shift + Z ZSanki kadar iyi değil !
CodeMedic

Eğer var ise @CodeMedic Bu kadar uzağa hızlısı nno : ;ve nno ; :olsa. (artı aynı şekilde). Değişim hakkında şüpheliydim, ama asla geri dönmeyeceksin. :nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>ve :nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>tek yap@"ve benzeri destekleyin .
jthill

20

Sık kullanılan görevler için özel bir harita oluşturma. Vim'i sık sık bırakırsanız, birkaç tuş darbesiyle eşleme yapın, örneğin

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

Eğer <leader>kullanarak virgül olarak ayarlanır let mapleader = ","vurma virgülle iki kez vim bırakma ve değişiklikleri kaydetme hızlı bir yoludur. Ekleme modundayken bir tuş vuruşunu daha kaydetmek isterseniz, aynı zamanda ilgili ek modu eşlemesi oluşturun:

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

Ancak dikkat edin, bu <leaderiki kez vurduğunuzda, yanlışlıkla oldukça vim olabilir .


1
Tam bir cevap için teşekkür ederim, vim hakkında daha fazla şey öğrenmemi teşvik ediyor (kaçınmaya meyilliyim)!
vemv

4
@vemv, tam tersi yönde çalışmalısınız - aynı şeyi bir defadan fazla yapmak zorunda kaldığınızda, bunu durdurmanın bir yolu olup olmadığına bakın!
Wayne Werner

17

Sihri yapmak için bunu kullanın. Sadece iki tuşa basma!

Ctrl+ skaydetmek için

ctrl+ dkaydetmek ve çıkmak için,

ctrl+ qdeğişikliklerden vazgeçmek için.

1 inci. Bunu ~ / .bashrc dosyasına ekle

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

2. Bunu ~ / .vimrc dosyasına yerleştirin

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 üncü. Vim'i yeniden başlatın ve daha verimli günler elde edin!


2
Neden sadece ZZ ve ZQ değil, + çıkmak için CTRL + D / CTRL + Q tuşlarını kullanın?
Evan Carroll,

Merhaba Evan, ctrl + d / ctrl + q sadece iki tuşa basarken, ZZ ve ZQ üç tuşa ihtiyaç duyuyor. shift + z + z / shift + q + q. Bunu sık sık yaparsak bir tasarruf anahtarı önemlidir. Dahası ctrl + s ile kısayol tasarrufu yaptık. ZZ veya ZQ'dan daha sezgisel olduğunu düşünüyorum.
Brain90

3
ZQ’yu her zaman tehlikeli olarak düşündüm. Kaydetmek için ZQ tuşuna basmayı düşünebilirsiniz, ancak yanlışlıkla Z'ye iki kez basarsanız, hiçbir şey yapmadan dosyanızı kaydettiniz.
Keith Devens

1
Eğer bir mac kullanıyorsanız o zaman ~ / .bash_profile kullanın. Ve onu kaynaklamayı unutma.
Snowcrash

16

Sadece Q'Çıkmak' için ne dersin ?

Bu sadece bir adet kaydırılmış tuşa basılmasını gerektirecektir (yani Shiftve Q). Aynı zamanda nadiren tesadüfen çarptığım kilit bir kombinasyon.

Varsayılan olarak, vim Q ile eşleşir switch to "Ex" mode. "Ex" modunu benim kadar işe yaramaz (veya sinir bozucu) bulursanız, varsayılan işlevini hiç kaçırmazsınız.

İşte dosyamda ne var .vimrc:

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

Kaydedilmemiş arabellekleriniz varsa, çıkmadan önce sizi uyarır.


Bir şekilde VIM Q'mda zaten :qvarsayılan olarak haritalandırıldı . Bahşiş için teşekkürler.
user13107,

7

İşte VIM için bir hile sayfası

Hile-tabaka için-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.

Biraz daha ::

Dosyaları Kapatma ve Kaydetme

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.

Son 2 "dosya son kaydedildiğinden beri" ... "bariz" fakat yeni başlayanlar "harika, vi'yi açtığımdan beri" "anlamalı ve bu oturum sırasında kaydetmişlerse hayır olduğunu keşfetmeliler": q!" orijinal dosyayı hiç kurtarmaz ve ": e!" 'yi de kurtarmaz. Yalnızca dosyanın en son açıldığı veya kaydedildiği zamandan bu yana yapılan değişiklikleri atar.
Olivier Dulac

3

Ayrılmak ve vim'den tasarruf etmek için basit ve kullanışlı çözümüm :

Ctrl+ Xkısayol.

Jut bu kodu .vimrcdosyaya ekle :

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

1
Güzel, ama neden <C-Q>haritalanamaz?
friederbluemle

2

Deneyin

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

Eğer fFtT kullanıyorsanız, bu biraz alışmanız gerekecek, fakat şimdi istifa etmek sadece ;xgerektiğinde tasarruf etmek, ;qtasarruf etmemek için. Ayrıca, diğer her şey de daha hızlı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.