ZyX'in #vim'de söylediği gibi, bu soru "Vim uzmanları neden sıcaktan daha lezzetli tercih ediyor?" .
"Vim uzmanları", sekmeleri yerine arabellekleri tercih etmez: aralarında dosya vekilleri olarak arabellekleri ve çalışma alanları olarak sekme sayfalarını kullanırlar. Tamponlar ve sekme sayfalarının farklı amaçları vardır, bu yüzden birini diğerine tercih etmek hiçbir anlam ifade etmez.
Tamponlar ve sekmelerle ilgili sorun , bağımsız gerçeklerin bir kombinasyonundan kaynaklanan bir karışıklıktır .
Çoğu "modern" metin düzenleyici ve IDE , yüklü dosyaları temsil etmek için bir sekme metaforu kullanır. Bu metafor bir bilgi sistemi gibi davranır - kullanıcıya hangi dosyaların açıldığını ve durumlarını gösterir - ve etkileşimli bir cihaz - kullanıcının bu açılmış dosyaları manipüle etmesine (yeniden sırala, seç, kapat…) izin verir. Birçok sınırlamalarına rağmen, sekmeler her yerdedir ve insanlar bunlara alışır ve her yerde bekler .
Vim, sekme sayfalarını kullanıcılarının geçici "çalışma alanları" oluşturmaları için 7.0 olarak tanıttı . Özelliklerinde, özel seçeneklerinde, özel komutlarında veya :help
bölümlerinde yer alan hiçbir şey sekme sayfalarının dosya proxy'si olarak kullanılabileceğini veya kullanılabileceğini göstermez.
Tabii ki "sekme sayfaları" adı ve görünümü dışında hiçbir şey , bu çok karışıklığa yol açar.
Olmadan :set hidden
bulmak için çok kolay varsayılan olarak devre dışı bırakılır ve hangi, Vim imkansız mevcut olanı yazma ya da değişiklikleri terk etmeden başka tampon geçmek için yapar. Bu seçeneğin farkında olmayan yeni kullanıcıların, ağır pencereler kullanımına veya bulabilecekleri en yakın "sekme benzeri" özelliğe dönmekten başka seçenekleri yoktur: sekme sayfaları.
"Sekme sayfası", özellikle belgelerin okunmasının zaman kaybı olduğu fikrinin hakim olduğu bir dönemde, bu özellik için talihsiz bir isim seçimidir.
Vim'de sekme sayfaları, pencerelerin üzerine inşa edilmiş bir soyutlamadır, kendileri de tamponların üzerine inşa edilmiş bir soyutlamadır. Her yeni seviye yararlı özellikler ekler, ancak iş akışınızı kısıtlar.
"Arabellek yolu"
Arabellek tabanlı bir iş akışı ile birlikte çalıştığınız dosyalar tek bir boyutta dağıtılır. Tamponlarınız arasında gezinebilir, adının bir kısmını (tamamlama ile) veya numarasını yazarak belirli bir tampona erişebilir, tamponlar arasında geçiş yapabilir, bunları kolayca hedefleyebilirsiniz. Temelde sürtünme yok.
Sekiz tampon açık, sadece biri görünür:
Numaraya göre değiştirme:
İsme göre değiştirme:
Tamponlar Vim'in dosya proxy'leri. Dosyalar açısından düşünürseniz, arabellekler açısından düşünürsünüz.
"Pencere yolu"
Pencereye dayalı bir iş akışı ile, "dosyalarınızın" her ikisi de yalnızca arabellekleri kullanırsanız kullandıkları gibi tek bir "sanal" boyut boyunca ve diğer iki "fiziksel" boyut boyunca dağıtılır . Ancak, bu boyutların bulunduğu kartezyen boşluklar neredeyse tamamen ayrılmıştır: başka bir tampona taşımak yine de "başka bir dosyaya geçmek" anlamına gelir, ancak başka bir pencereye gitmek anlamına gelmez. İstenen dosyaya karşılık gelen tampon, o pencerede görüntülenebilir, ancak başka bir sekmede, belki başka bir sekme sayfasında da görüntülenebilir veya hiç görüntülenmeyebilir.
Pencerelerde, açık dosyalar arasında gezinmek 'switchbuf'
ve ile bile çok karmaşık veya çok basit hale gelir :sb
. Çoğunlukla aynı şey için iki komut kümesi kullanmak zorunda olduğunuz için: bir arabellek erişimi.
Windows'un aşağıda açıklandığı gibi kullanımları vardır, ancak herhangi birinin iş akışındaki arabellekleri değiştirmek için gerekenlere sahip değildir.
Burada bir Vim colorscheme üzerinde çalışıyorum. İki pencere aynı arabelleğin farklı görünümleridir: üstteki, renk şemasında kullanılan renk kodlarının bir tablosu ile referans olarak hizmet eder ve altta çalıştığım yer:
Windows, dosya proxy'leri olarak tasarlanmamıştır ve bunlara dönüştürülemez: "kapsayıcılar" veya "görünüm pencereleridir". Ne fazla ne az.
"Sekme yolu"
Sekme tabanlı bir iş akışıyla, Vim'in sekme sayfalarının doğasını tamamen göz ardı ederken, önceki düzenleyicinizden alışkın olduğunuz kullanıcı deneyimini taklit etmeye çalışırsınız. Bir an için bu stratejinin genellikle çok verimsiz olduğunu unutursak , tıpkı pencerelerde olduğu gibi, Vim'i çok fazla esneklik kaybetmeden bu "bir dosya = bir sekme" paradigmasına uymaya zorlamak da imkansızdır .
Hâlâ yukarıdakiyle aynı dosyalarla çalışırken, tabline neredeyse hiç faydası olmayan önemli bir yer kaplar. Tüm dosyalarım ve tüm sekmelerim çağrıldı, javascript*.vim
bu yüzden yapamıyorum 3gt
ve doğru yere ulaşacağımdan eminim ve belirli bir sekmeye adıyla ulaşmak imkansız. Buna, etiketinin çok yararsız ama mükemmel mantıklı olabileceği gerçeğini de ekleyin [Quickfix List]
... Bir dosya / arabelleği bir sekme sayfasına bağlamak için pratik bir yol olmadığından, temel olarak sekme sayfaları arasında gezinmek için yalnızca tek bir pratik yol kalıyor / buffers / files: bisiklet.
Ve evet, benim tabline sadece 8 sekme ile tıka basa dolu, 20 tane varsa hayal edin!
Sekiz arabellek sekiz sekme sayfasında açılır (yanlış)
İki özel görev için iki sekme (sağda)
Sekme sayfaları, bir veya daha fazla pencere içerecek şekilde tasarlanmış "kapsayıcılar" veya "görünüm pencereleri", kendileri de arabellekleri içerecek şekilde tasarlanmış "kapsayıcılar" dır.
Sonuç olarak
"Vim uzmanları" (diyelim sanki benmişim gibi konuşabilirim) sekmeler yerine tamponları tercih etmiyorlar : sadece tasarlandıkları gibi Vim kullanıyorlar ve bu tasarımla mükemmel rahatlar:
"Vim uzmanları" 2, 30 veya 97 tampon yüklüdür ve uzamsal dağıtım ile uğraşmak zorunda olmadıkları için çok mutludurlar;
iki dosyayı karşılaştırmaları veya geçerli arabelleğin bir bölümünde referans almaları gerektiğinde çalışmaları gerektiğinde, "Vim uzmanları" pencereleri kullanır, çünkü bu şekilde kullanılması amaçlanmıştır;
mevcut görüşlerini bozmadan bir süre projenin ayrı bir bölümünde çalışması gerektiğinde, "Vim uzmanları" yepyeni bir sekme sayfası yükler.