Yeni sekmeleri açmayı nasıl varsayılan yapabilirim?


10

Ben açtığınızda vimbirden fazla dosya ile ( vim f1 f2 ...kullanmadan), nasıl, doğrudan sekmelerde bunları açılmasını sağlayabilir -p?

Kabuk davranışını vim davranışından ayırmak, vimtemelli takma adları kaldırmak vb. Bu yüzden takma ad kullanmamayı tercih ediyorum -p.

Bu bir birkaç SE sitelerde (örneğin SO ) istendi eminim . Bununla birlikte, bunu yapmanın en iyi yolunun ne olacağını yargılamak için hiçbir pozisyonum yok, bu yüzden önerilen bir yöntemin neden iyi olduğuna dair bir not bekliyorum.

Bağlantılı SO yayını için:

  • kabul edilen cevap tabpagemax=9999. Buna kişisel önyargı diyorum, ama çok sayıda bir sınır belirlendiğini görüyorum ve sanırım yanlış bir şey var (eğer görürsem hissettiğim gibi chmod 777).

    :au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
    
  • diğer cevap çok daha kısa ve öz bir sekme açılmasına neden olur.

    :autocmd VimEnter * argdo tabedit
    

Fazladan sekme açılmayan ve büyük bir değer için bir sınır ayarlamayan bir yanıt bekliyorum (veya bunun neden kötü bir şey olmadığını açıklayın).



@OrangeTux Gilles'in cevabının ruhuyla paylaştım. Ama downvote ile Gilles'in mevcut bir gönderiye bağlantı veren bir gönderiye ne söyleyeceğini merak ediyorum?
muru

@Carpetsmoker Yorum güncellemenizi görmedim. Boş bir sekme sayfası, oturumlarınız :qaalışkanlıkla zorla sona erdiğinde büyük bir sorun değildir . Eğer diğeriyle birlikte gideceğim tek avantaj buysa, daha basit görünüyor.
muru

3
@muru WWGS? Stack Overflow'daki yanıtların tatmin edici olmadığını düşünmek için bir nedeniniz var mı? Eğer öyleyse, bunu sorunuzda açıklayın. Her durumda, sorunuzdaki SO cevaplarını özetleyin. Bu, kendi cevabını içeren soruya yol açarsa, yayınlamayın.
Gilles 'SO- kötü olmayı bırak'

@Gilles Güncellendi. Gerçek komutları göndermedim, sence yapmalıyım?
muru

Yanıtlar:


4

Bazı deneylerden sonra, bunu en iyi yol olarak buldum; şu şekilde davranmalıdır vim -p:

au VimEnter * if !&diff | tab all | tabfirst | endif

İlk olarak, tab allbağımsız değişken listesindeki ( :args) tüm girişleri bir sekmede açar . Bağımsız değişken listesi, başlangıçta Vim'e ilettiğiniz dosyaların listesidir. Ve tabfirstilk sekmenin sondan ziyade odaklandığından emin olur (bu isteğe bağlıdır).

Biz yok eğer bunların hiçbirini yapmak &diffsetidir; öyleyse, vimdiffya da 2 sekme değil, 2 pencere olmasını istediğimizvim -d yeri kullanıyoruz .

Gelen bu cevap Ben de argüman listesi ve hakkında biraz yazdım tab allilgisini çekebilir.


Diğer çözümler hakkında bazı notlar:

  • tab ballargüman listesinde değil, tampon listesindeki her giriş için bir sekme açar . "Sorun", arabellek listesi çıkıldığında viminfo dosyasına kaydedilebilir ve başlangıçta geri yüklenebilir (varsa %, 'viminfo'varsayılan olarak etkin değil). Yani sadece yazarsanız vimbu dosyaları açar. Bunu istenmeyen olarak görüyorum, ancak bazı insanların bunu yararlı bulduğunu hayal edebiliyorum; bu yüzden tercih ettiğinizi kullanın.

  • set tabpagemax=9999gerekli değil; varsayılan değerdir 10ve bu iyi olmalıdır. Daha fazlasını istiyorsanız, ancak 9999aptal bir sayı ise bunu vimrc'nizde artırabilirsiniz . Eğer kullanırsanız -p, tabpagemaxsekmeler de alırsınız . Yani buna saygı göstermeli. Bunun başlangıçta bir tampon açacağını (okuyacağını) unutmayın, bu yüzden oldukça yavaştır.

  • autocmd VimEnter * argdo tabeditaynı şekilde söylemenin yolu tab all. Ancak, ilk arabellek temizlenmez, bu yüzden bu ekstra sekmeden ayrılırsınız ( tab alltüm sekmelerin yerini alır). Bunu düzeltmek için Josh Petrie'nin cevabındaki geçici çözüme ihtiyacınız var.


2

Ben böyle bir şey eklemek için .vimrcsenin sorunları çözebilir düşünüyorum (ancak, aslında, ben bunu kullanmak değil ve sadece minimal test yaptık, bazı durumlarda garip şeyler yapabilir):

function! OpenArgumentsInTabs()
  ardo tabedit
  if tabpagenr("$") > 1
    tabclose
  endif
endfunction

autocmd VimEnter * call OpenArgumentsInTabs()

Belirttiğiniz gibi, argdo tabeditsize boş bir ekstra sekme bırakacaktır. Böylece bu sekmeyi otomatik olarak kapatabilirsiniz. Ancak, yalnızca tabcloseişaretlenmemiş olarak çağıramazsınız veya bağımsız değişkenler veya tek bir dosya olmadan başlattığınızda vim size bir hata verir ("son sekmeyi kapatamazsınız"). Bunun yerine, toplam sekme sayısının birden fazla olup olmadığını kontrol edin ( geri dönmeye $neden olan şey budur tabpagenr) ve ancak o zaman son sekmeyi kapatmanız gerekir.


Bununla birlikte, vim'in sekmelerinin diğer editörlerin sekmelerine benzemediğini belirtmek istiyorum ve bu, iş akışınızda sekmeleri nasıl kullanacağınızı düşünürken akılda tutulması gereken bir şey (bunun farkındasınız gibi görünüyor, ancak ben kendi kararlarını verebilmeleri için gelmeyen okuyucuların yararına bir noktaya değinmek istemektedir).

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.