VIM uygulamasından çıkmadan dosya kapatılsın mı?


258

Bir dosyayı düzenlemek ve yazmak için :eve :wkomutlarını kullanıyorum . Geçerli dosyayı Vim'den ayrılmadan kapatmak için "kapat" komutu olup olmadığından emin değilim?

:qKomut bir dosyayı kapatmak için kullanılabilir biliyorum , ama son dosya ise, Vim de kapalı; Aslında Mac OS'de MacVim çıkar. Sadece Vim penceresi kapalı ve ben boş bir Vim penceresi tekrar açmak için Control- kullanabilirsiniz N. Vim'in boş bir ekranla açık kalmasını istiyorum.

Yanıtlar:


343

Bu, tamponu (dosyayı kapatmak için çeviren) siler

:bd 

6
Senin tercih OP eğilimi benimkinden daha iyidir, ancak tercih eğilimindedir: enew çünkü tampon listesinde tampon sahip olmak gibi. :)
Rytmis

2
Bunu yaptığımda, vim ilk arabelleği gösterir, ancak yine de arabelleğe erişebilirim
Martin Andersson

18
@Martin, arabelleği tamamen silmek için şunu kullanın : bw
sebnow

43

Daha önce de belirtildiği gibi, arıyorsunuz :bd, ancak bu tamponu tamamen kaldırmaz, yine de erişilebilir:

:e foo
:e bar
:buffers
  1 #h   "foo"                          line 1
  2 %a   "bar"                          line 1
Press ENTER or type command to continue
:bd 2
:buffers
  1 %a   "foo"                          line 1
Press ENTER or type command to continue
:b 2
2   bar

Bunun yerine :bwhangisinin tamamen kaldırıldığını isteyebilirsiniz .

:bw 2
:b 2 
E86: Buffer 2 does not exist

Yaklaşık bilmeden :bwuzunca bir süre beni rahatsız.


3
VIM'in yardımının şunu söylediğini unutmayın :bw: "Ne yaptığınızı bilmiyorsanız bunu kullanmayın."
mato

23

Vim pencerenizde birden fazla bölünmüş pencere varsa :bd, geçerli dosyanın bölünmüş penceresini kapatır, bu yüzden biraz daha gelişmiş bir şey kullanmak isterim:

map fc <Esc>:call CleanClose(1)

map fq <Esc>:call CleanClose(0)


function! CleanClose(tosave)
if (a:tosave == 1)
    w!
endif
let todelbufNr = bufnr("%")
let newbufNr = bufnr("#")
if ((newbufNr != -1) && (newbufNr != todelbufNr) && buflisted(newbufNr))
    exe "b".newbufNr
else
    bnext
endif

if (bufnr("%") == todelbufNr)
    new
endif
exe "bd".todelbufNr
endfunction

13
Şimdi bu pasaj ne yapıyor?
dolzenko

1
Büyük olasılıkla çağrılardan sonra komutun gerçekten yürütülmesini <CR> istiyorsunuz.
dma

2
@dolzenko, isteğe bağlı olarak geçerli arabelleği kaydetmek ve orijinali silmeden önce yeni bir arabelleğe geçmek için normal modda 'fc' ve 'fq' ile eşleşir. Bu, ayarladığınız bölmeleri korur.
dma

İyi bir fikir gibi görünüyor. Bunu denediğimde, aşağıdaki hata iletisini alıyorum: "CleanClose işlevi yeniden tanımlanamıyor: Kullanımda"
jononomo

2
"F" yi yeniden eşleme. . . "f" aslında çok kullanışlıdır. Bu eşleme ile "c" veya "q" kelimelerini asla "bulamazsınız".
tandrewnichols

17
: [N] bd [elete] [!] *: Bd * *: bdel * *: bdelete * * E516 *
: bd [elete] [!] [N]
                Tamponu kaldır [N] (varsayılan: geçerli tampon) ve
                arabellek listesi. Arabellek değiştirildiyse, bu başarısız olur,
                [!] belirtilmediğinde, bu durumda değişiklikler kaybolur.
                Dosya etkilenmez. Bu arabellek için herhangi bir pencere
                kapalı. Tampon [N] geçerli tampon ise, başka bir tampon
                görüntülenir. Bu, en son giriş
                yüklü bir arabelleği gösteren atlama listesi.
                Aslında, arabellek tamamen silinmez, kaldırılır
                arabellek listesinden | unlisted-buffer | ve seçenek değerleri,
                tampon için değişkenler ve eşlemeler / kısaltmalar
                temizlenir.

9

Son dosyayı zaten kaydettiyseniz, :enewarkadaşınızdır ( :enew!son dosyayı kaydetmek istemiyorsanız). Orijinal dosyanın yine de arabellek listenizde olacağını unutmayın :ls.


6

Eğer varsa değiştirmek bir dosya ve Vim çıkmadan ve kaydetmeden kapatın istiyorum, yazmalısınız :bd!.


3

:bdharitalanabilir. İle eşliyorum F4,Shift - F4ben çünkü artık istemediğiniz bazı değişimin zorla sona gerekirse.



1

Aşağıdakileri .vimrc dosyanıza ekleyin ve düğmesine basıldığında F4geçerli dosya kapatılır.

:map <F4> :bd<CR>


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.