Vim - tek komutla tamponu kaydet ve kapat


25

Bir dizinde bir sürü metin dosyası var ve her bir indiviudaly düzenlemeliyim.

İntibak hattında başladım

vim *.txt

dosyaları vim'de ayrı tamponlar olarak açar ve ilkine bakarken beni bırakır. Düzenliyorum - sonra kaydetmek için ': w' ve arabelleği kapatıp bir sonrakine geçmek için ': bd' kullanıyorum.

Bu ': w: bd' tamponu kaydetmek ve kapatmak benim için uzun sürüyor ve bunu yapmak için daha vim ninja bir yöntem olduğundan şüpheleniyorum - üzerinde çalışmakta olduğunuz tamponu kaydetmek ve kapatmak için tek bir dokunuşta önerilen yöntem nedir?


Önerilen yöntemim, sadece :nextarabelleklere geçmek ve göreviniz bittiğinde her şeyi yazmak / kapatmak olacaktır :wqa. Bu sanıyor sahip olduğun :set hiddenGözlerinde farklı ~/.vimrc.
Romainl

Yanıtlar:


22

Dosyaları komut satırında Vim'e aktarırken, bunlar yalnızca arabelleklerde açılmaz, aynı zamanda argüman listesini de doldururlar . Bu nedenle, onlarla gezinmek için :nextve gibi komutları kullanabilirsiniz :first(ve :argdotoplu işlemeler için, elli bir numara olabilir). Sorunuz için önerdiğim komut :wnext(kısa biçim :wn), :writeşu anki tampon belleğe gider ve :nextbire gider .

:bdeleteÖzellikle bir dosya kümesi ile komut satırından Vim'i başlatırken ve daha sonra işiniz bittiğinde bıraktığınızda açıkça bir arabellek kullanmanıza gerek yoktur . (Aklıma gelen tek istisnalar, sistem belleğinden tasarruf etmek için çok büyük bir dosyayı boşaltmak ya da birçok farklı düzenleme için tek bir GVIM örneğini yeniden kullanmaktır.)

Ancak, bunu gerçekten istiyorsanız, özel bir komut tanımlayın, örn.

:command Wd write|bdelete

5
Sen OP ne talep ulaşmada iki yöntem söz ettik, ama ikinci bir açık değildir: :w|bd.
Jonno

-> OP'nin kullandığı yaklaşıma uyma avantajı var, ancak :nextbazı durumlarda daha mantıklı olacağıma inanıyorum .
Jonno

4

Sana olmadığını kabul ederken var şu anda kullanmakta değil açık tamponlarını silmek, ben çünkü silmek mi vim-havayolu üstündeki 'ın sekme hattı etkin olan gösterileri tüm açık tamponlar her zaman penceresi. Benim içinde aşağıdakiler var .vimrc:

nnoremap qq :w\|bd<cr>

qq mevcut arabelleği kaydeder ve kapatır, ancak aynı zamanda vim'in "kayıt makrosu" işlevselliği ile uğraşır (ki ben iyiyim).


2
Yerleşik ZZakla gelir, ama tasarruf ve tamamen Vim bırakma yerine sadece tampon silme yukarı o biter. Küçük harf zz, görüntüyü geçerli imleç çizgisinde ortalamaktan daha değerli bulan herkes için ilginç bir alternatif haritalama olabilir.
08:00

1
Geçenlerde QVim'de ne kadar değerli bir kayıt olabileceğini anladıktan sonra değiştirdim .
apostl3pol
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.