Vim düzenleyiciden nasıl çıkarım?


3765

Sıkıştım ve kaçamıyorum. Diyor ki:

"type :quit<Enter> to quit VIM"

Ama ben yazdığımda, bu nesne gövdesinde görünür.


131
Sadece VIM'den çıkmaya mı çalışıyorsun? Bu durumda, "escape" tuşuna basın ve ardından ': q'
Pop

47
İki nokta üst üste unutmayın ! Yazmanız :quitve ardından [ENTER]tuşuna basmanız gerekir.
Farahmand

88
Vim'in temellerini öğrenmek gerçekten kolaydır ve sisteminize entegre edilmiştir. Terminal tipinde "vimtutor". 25 dakika sonra normal metin düzenleyicinizden daha hızlı gideceksiniz!
Mark Robson

4
Daha fazla komutu burada kontrol edin .
Toni

78
git commitGelecekte vim göndermenizi önlemek için: git config --global core.editor="nano"
Tom Kelly

Yanıtlar:


4902

Esc"Normal moda" girmek için tuşa basın. Sonra :"Komut satırı moduna" girmek için yazabilirsiniz . :Ekranın altında iki nokta üst üste ( ) görünür ve aşağıdaki komutlardan birini yazabilirsiniz. Bir komutu yürütmek için Entertuşuna basın .

  • :q bırakmak (kısaltmak :quit)
  • :q!kaydetmeden çıkmak (kısaltmak :quit!)
  • :wq yazmak ve çıkmak
  • :wq! yalnızca okuma izni olsa bile yazma ve çıkma (dosyanın yazma izni yoksa: yazmaya zorla)
  • :x yazmak ve çıkmak için (buna benzer :wq, ancak yalnızca değişiklik varsa yazın)
  • :exityazmak ve çıkmak (ile aynı :x)
  • :qahepsinden çıkmak (kısaltmak :quitall)
  • :cq kaydetmeden çıkmak ve Vim'i sıfırdan farklı bir hataya döndürmek (yani hatayla çıkmak)

ZZKaydetmek ve çıkmak (aynı :x) veya ZQsadece çıkmak (aynı ) yazmak için Vim'den doğrudan "Normal mod" dan çıkabilirsiniz :q!. (Not durum burada önemlidir. O ZZve zzaynı anlama yoktur.)

Vim, :helptüm sorularınıza cevaplar ve yeni başlayanlar için bir öğretici bulabileceğiniz kapsamlı bir yardıma sahiptir - komutla erişebilirsiniz .


15
Eğer esc'i yeniden eşlemediyseniz veya .vimrc'nizde garip bir haritaya sahip değilseniz, kesinlikle gerekir. Linux xev yazın ve kaçışa kaçtığınızda aldığınız anahtar tip olduğundan emin olun.
dirvine

17
Esc kullanamıyorsanız ctrl + c'yi kullanabileceğinizi unutmayın (kabuğum TotalTerminal'de olduğu için benim gibi). vim.wikia.com/wiki/Avoid_the_escape_key
dotnetCarpenter

25
:x== ZZama :x! = :wq. :xyazma dosyası iff dosyası değişti, :wqher zaman dosya yaz (önemli yani kullanırken inotify).
Hauleth

36
Dürüst olmak gerekirse, vim'in yardım sistemini kullanarak vim'in kendisini kullanmaktan daha zor bir zamanım var ve çoğunlukla hızlı ref kartlarına ve çevrimiçi belgelere güveniyorum.
bgvaughan

18
dosyada izinleriniz yoksa ancak sudo izinleriniz varsa:w ! sudo tee %
tvlooy

189

Resimler bin Unix komutu ve seçeneğine değer:

Resim açıklamasını buraya girin

Bunu her dönem öğrencilerime çiziyorum ve daha sonra vi'yı kavramış gibi görünüyorlar.

vi sadece üç durumlu sonlu durum makinesidir .

Başladıktan sonra vi, körü körüne kısa, birkaç karakter komutu yazabileceğiniz KOMUT moduna girer . Ne yaptığını biliyorsun; bu amatörler için değil.

Metni gerçekten düzenlemek istediğinizde, bir karakterlik komutla INSERT moduna geçmelisiniz:

  • i: imleç yerine INSERT öğesine gidin
  • I: satırın başında INSERT moduna geç
  • a: imleçten sonra ekle
  • A: satırın sonuna ekle
  • o: geçerli satırın altında yeni bir satır
  • O: açmak akım hattının yerine yeni bir satır

Şimdi, soruyu cevaplıyoruz: çıkmak.

Vi'dan EX modundan çıkabilirsiniz:

  • q: herhangi bir değişiklik yapmadıysanız veya önceden kaydetmediyseniz
  • q !: herhangi bir değişiklik yok sayar ve çıkmak
  • wq: kaydet ve çık
  • x: bu wq'ye eşit

wve xbir dosya adı parametresini kabul edin. Vi'ye bir dosya adı ile başladıysanız, burada tekrar vermenize gerek yoktur.

Sonunda, en önemlisi: EX moduna nasıl ulaşabilirsiniz?

EX modu, ekranın alt satırında yazmayı görebileceğiniz uzun komutlar içindir. COMMAND modundan, iki nokta üst üste :itersiniz ve alt satırda yukarıdaki komutları yazabileceğiniz bir iki nokta üst üste görünür.

INSERT modundan, EXC moduna geçmek için ESC, yani Escape düğmesine basmanız, COMMAND moduna geçmeniz ve:: tuşuna basmanız gerekir.

Emin değilseniz, ESC tuşuna basın; bu sizi komut moduna getirecektir.

Bu nedenle, sağlam yöntem ESC -: - x-Enter dosyanızı kaydeder ve dosyadan çıkar.


5
Teşekkür ederim, görüntü çok yardımcı. Ancak, benim için wEx'den Komut moduna Escgeçmiyor , ama değişiyor . Neyi yanlış yapıyorum?
Nick Volynkin

2
W-Enter yazarsanız dosyanızı kaydeder ve KOMUT moduna geri dönersiniz. Save & quit komutlarının tam resmini elde etmek için yazdım.
Gergely

3
yani demek istiyorsun :w. O zaman mükemmel mantıklı. Bu arada, diskten yeniden yükleme (yani değişiklikleri geri alma ancak dosyayı kapatma) komutu var mı? Eğer öyleyse, wşemada yanında olabilir .
Nick Volynkin

2
@ Az önce karışıklığı anladım! Dokümanlardan normal moda komut modu da denir ! Yani, komut modu! = Komut satırı modu. Vaov!
jpaugh

2
@NickVolynkin diskten yeniden yükleme komutu :e(veya :e!kaydedilmemiş değişiklikler hakkında sizi uyaracağından daha olasıdır !)
JDS

177

Eğer bir komut girmeden önce vurmak Escanahtarı . Girdikten sonra Returnonaylamak için düğmesine basın.

Escgeçerli komutu bitirir ve Vim'i normal moda geçirir . Şimdi düğmesine basarsanız :, ekranın altında: görünecektir . Bu, aslında bir komut yazdığınızı ve dosyayı düzenlemediğinizi onaylar.

İsteğe bağlı bölümü parantez içine alınmış olan çoğu komutları, kısaltmalara sahiptir: c[ommand].

'*' İle işaretlenmiş komutlar yalnızca Vim'dir (Vi'da uygulanmaz).

Güvenli çıkış (kaydedilmemiş değişiklikler varsa başarısız olur):

  • :q[uit] Geçerli pencereden çıkın . Bu son pencere ise Vim'den çıkın. Geçerli arabellekte değişiklik yapıldığında bu başarısız olur .
  • :qa[ll]* Değiştirilmiş bazı arabellekler olmadığı sürece tüm pencerelerden ve Vim'den çıkın.

Bilgi isteminden çık (kaydedilmemiş değişiklikler olup olmadığını sorar)

  • :conf[irm] q[uit]* Çık, ancak değiştirilen bazı arabellekler olduğunda komut istemi ver.
  • :conf[irm] xa[ll]* Tüm değiştirilen tamponları yazın ve Vim'den çıkın. Bazı arabellekler yazılamadığında bir bilgi istemi açın.

Değişiklikleri yazın (kaydedin) ve çıkın:

  • :wqGeçerli dosyayı yazın (değiştirilmemiş olsa bile) ve çıkın. Dosya salt okunur olduğunda veya arabellekte bir ad yoksa yazma işlemi başarısız olur. :wqa[ll]* tüm pencereler için.
  • :wq!Aynı, ancak salt okunur dosyaları bile yazar. :wqa[ll]!* tüm pencereler için.
  • :x[it], ZZ( ayrıntılarla birlikte ). Dosyayı yalnızca değiştirilmişse yazın ve çıkın, :xa[ll]tüm pencereler için *.

Değişiklikleri atın ve çıkın:

  • :q[uit]! ZQ* Görünür arabellekler değiştiğinde de yazmadan çıkın. Gizli arabellekler değiştiğinde çıkmaz.
  • :qa[ll]!*, :quita[ll][!]* Vim'den çık, arabellekteki (gizli dahil) tüm değişiklikler kaybolur.

ReturnKomutu onaylamak için tuşuna basın .

Bu yanıt tüm Vim yazma ve bırakma komutlarına ve bağımsız değişkenlerine başvurmaz. Gerçekten de Vim belgelerinde referans gösterilmektedir .

Vim, Esc:helpReturnaçmak için yazdığınız kapsamlı yerleşik yardıma sahiptir .

Bu cevap esinlenerek diğeri başlangıçta @dirvine tarafından kaleme ve diğer SO kullanıcılar tarafından düzenlendi. Vim referansı, SO yorumları ve diğer bazı kaynaklardan daha fazla bilgi ekledim. Vi ve Vim arasındaki farklar da yansıtılmaktadır.


81

Vim'e kaydetmeden çıkmak ve Vim'in sıfır dışında bir çıkış kodu döndürmesini istiyorsanız, kullanabilirsiniz :cq.

Bunu her zaman kullanıyorum çünkü pembemsi kaymaya zahmet etmem !. Vim'e bir dosyaya kaydedilmesi gerekmeyen şeyleri sık sık iletiyorum. Ayrıca, bir iade işlemini iptal etmek için sıfırdan farklı bir değerden çıkılması gereken garip bir SVN paketleyicimiz var.


19
Ben de git taahhüdü, visudo veya crontab'ı iptal etmek için bunu kullanıyorum ...
Josh Lee

Git'in :q!sıfırdan farklı bir çıkış kodu için değil boş olmayan bir ileti olup olmadığını kontrol etmesi nedeniyle bir git komutunun iptal edilmesi iyi çalışır.
moopet

Çalıştığını biliyorum, sadece: cq shift tuşunu gerektirmiyor. :-)
Sue Spence

47

Bu, sadece dışarı çıkmak istiyorsanız, ne yaptığınız hakkında hiçbir fikriniz yoksa ve açtığınız dosyalara ne olacağını umursamıyorsanız Vim'den çıkmanın en kötü senaryosu içindir.

Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter

Bu sizi çoğu zaman dışarı çıkarmalıdır.

Böyle bir şeye ihtiyacınız olan bazı ilginç durumlar:

  • iCtrl-ovg (ekleme moduna, ardından görsel moda ve ardından operatörün bekleme moduna girersiniz)

  • QappendEnter

  • iCtrl-ogQCtrl-r=Ctrl-k (bu dava için porges sayesinde)

  • :set insertmode(bu Ctrl-\Ctrl-nsizi normal moda döndürdüğünüz bir durumdur )


Düzenleme: Bu yanıt yukarıdaki durumlar nedeniyle düzeltildi. Eskiden:

EscEscEsc:qa!Enter

Ancak, Ex moduna girdiyseniz bu çalışmaz. Bu durumda yapmanız gerekenler:

viEnter:qa!Enter

Bu yüzden "Ne yaptığımı bilmek istemiyorum ve hiçbir şeyi kaydetmek istemiyorum, sadece şimdi istiyorum!" olabilir

viEnterEscEscEsc:qa!Giriş


6
@cavalcade Bu, editörün normal modda olduğundan emin olmak için güvenli bir şekilde sonlandırmanın oldukça genel bir yöntemidir. Normal kullanımda ihtiyacınız olan tek şey :qveya:wq
Dan Passaro

6
Yeterince genel değil! Ben (yeni başlayan) yazmış olsam ne olur i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>?
porges

@porges test davası için teşekkürler! Orijinal yöntemin sıkıntılı olduğunu kanıtlayan başka test örnekleri de vardır. Cevabı şimdi daha genel olacak şekilde düzenledim.
Heikki Naski

@HeikkiNaski en azından benim için Ctrl-C'den sonra Enter'a ihtiyacım var (ifade kaydından kaçmak için)
7'de porges

40

Kolay modda Vim'den çıkmanız gerektiğinde ( -yseçeneği kullanırken ) Ctrl+ Ldüğmesine basarak normal Vim moduna girebilirsiniz ve normal çıkış seçeneklerinden herhangi biri çalışır.


7
Yine başka bir seçenek: Ctrl+OINSERT modundan geçici olarak çıkmak ve sonra girmek için kullanabilirsiniz :q. Bu kombinasyonla yapılan hile, normal komutta tek bir komut yürütmek ve INSERT moduna geri dönmek için de yararlıdır.
Andrey Starodubtsev

28

Vim'de üç çalışma modu vardır: Giriş modu, Komut modu ve Ex modu.

Giriş modu - yazdığınız her şey, tüm tuş vuruşları ekranda yankılanır.

Komut modu veya Kaçış modu - bu modda yazdığınız her şey bir komut olarak yorumlanır.

Ex modu - bu başka bir editör, örn. Bir çizgi editörüdür. Satır başına veya bir dizi satıra göre çalışır. Bu modda,: ekranın altında belirir. Bu eski editör.

Vim'den çıkmak için, eski modda veya komut modundayken çıkabilirsiniz. Giriş modundayken Vim'den çıkamazsınız.

Eski moddan çıkma

  1. Komut modunda olduğunuzdan emin olmanız gerekir. Bunu yapmak için Esctuşa basmanız yeterlidir .

  2. :Tuşuna basarak eski moda geçin

  3. Çıkmak için ex modunda aşağıdaki kombinasyonlardan herhangi birini kullanın:

    :q- quit :q!- :wqkaydetmeden çık - kaydet ve çık ya da yaz ve çık :wq!- wq ile aynıdır, ancak dosya izinlerinin salt okunur olması durumunda yazmaya zorlayın :x- yaz ve çık :qa- hepsinden çıkın. aşağıdaki gibi birden çok dosya açıldığında faydalıdır:vim abc.txt xyz.txt

Komut modundan çıkma

  1. Çıkış tuşuna basın. Muhtemelen bunu komut modundaysanız yapmışsınızdır.

  2. Press Capital ZZ ( shift zz) - Kaydet ve Çık

  3. Capital ZQ ( shift zq) tuşuna basın - kaydetmeden çıkın.


3
"Eski mod" adını verdiğiniz komut aslında komut satırı modu olarak adlandırılır . Eski komutları girmenize izin verir, ancak bazı önemli farklılıklar vardır .
jpaugh

1
Hmm hayır. Görsel modu unutuyorsunuz.
Pryftan

26

Vurulduktan sonra ESC(veya bilgisayarımda cmd+ C) :komut isteminin görünmesi için tuşuna basmanız gerekir. Sonra girebilirsiniz quit.

Bilgileriniz kaydedilmediğinden makinenin bırakmanıza izin vermeyeceğini görebilirsiniz. Yine de çıkmak istiyorsanız, !çıktıktan hemen sonra girin (örn. :quit!).


19

Windows'a bir Git istemcisi yükleyerek Vim'i aldım. :qbenim için Vim'den çıkmazdı. :exitancak ...


1
Benzer şekilde bir macintosh üzerinde git yapıyor vim için bu çalıştı.
Joel

1
@Joel bunu mac bilgisayarımda kontrol etti, her iki komut da yasal ( vim -version7.3).
Nick Volynkin

2
İçin Git Bashpencerelerde, içinde VimbazenESC çalışmıyor. kullanmak CTRL+ [yerine.
Val

@Val Garip bir şekilde tanıdık geliyor. Iirc çünkü ikisi de aynı şeyi yapıyor. Olduğu ^[gibi ESC. Windows'un onu daha karmaşık hale getirmesi ilginçtir. Ve eğlenceli.
Pryftan

10

Soru burada soruldu .

qBir sayı ile komutu bu pozisyonda verilen bölünmüş kapatır.

:q<split position> veya :<split position>q da o konumda bölünmeyi kapatacak.

Diyelim ki Vim pencere düzeniniz aşağıdaki gibidir:

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

q1Komutu çalıştırırsanız , ilk bölümü kapatır.q2ikinci bölümü kapatacak ve tam tersi.

Quit komutundaki bölünmüş konumun sırası önemli değildir. :2qveya :q2ikinci bölümü kapatır.

Komuta ilettiğiniz bölme konumu, geçerli bölünme sayısından büyükse, son bölmeyi kapatır.

Örneğin, q100yalnızca üç bölmenin olduğu yukarıdaki pencere kurulumunda çalıştırırsanız , son bölmeyi kapatır (Bölme 3).

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.