NERDTree Dosya nasıl açılır ve explorer arabelleğini otomatik olarak kapatır


10

NERDTree eklentisini kullanırken varsayılan davranış yeni bir dosya açmak ve NERDTree arabelleğini açık tutmaktır. Ne yapmak istiyorum bu varsayılan davranışı tutmak ama aynı zamanda bir dosya açtıktan sonra NERDTree arabellek kapatılacak istediğinizde geçersiz kılmaktır.

let NERDTreeQuitOnOpen=1Yeni bir dosya açtığınızda otomatik olarak NERDTree arabelleğini kapatmak için kullanabilirsiniz , ancak bu seçenek tamamen varsayılan davranış (ki istediğim değil) geçersiz kılar.

İdeal olarak NERDTree'de istediğimi yapmak için yerleşik bir özellik olup olmadığını bilmek istiyorum. (Aradım ama böyle bir şey bulamadım, bu yüzden aslında var olmadığını düşünüyorum)

Ve bu yoksa, iki fikrim vardı:

  • Birincisi kuracak bir işlevi oluşturmaktır NERDTreeQuitOnOpeniçin 1, dosyayı açmak ve yeniden ayarlamak NERDTreeQuitOnOpeniçin 0.

  • İkincisi şu eşlemeyi oluşturmaktır: map d<CR> <CR> :NERDTree <CR> :bd<CR>bu dosyayı açar (ilk olarak <CR>), NERDTree buffer ( :NERDTree <CR>) 'a geri döner ve bu buffer ( :bd <CR>)' ı kapatır . Eşleme sadece NERDTree arabellek var böylece geliştirmek gerekir ama bu oldukça çirkin bir çözüm hissediyorum ve ben geliştirilebilir thik.

Hangi fikir en iyisi olurdu ve neden? Yoksa daha iyi bir seçenek var mı?



@Peter: Yorumunuz için teşekkürler, makale oldukça ilginç ve muhtemelen netrw ve split explorer kavramını deneyeceğim. Ben makalede açıklananların avantajını anlıyorum ama sorun aslında benim sorunumu çözmek değil sadece kullandığım aracı değiştirmek için tavsiye olduğunu. Alışkanlıklarımı değiştirmeye karşı değilim ama önce sorunumu çözmek ve sonra yeni bir araç denemek istiyorum :)
statox

SU ile ilgili, cevaplanmamış soru: superuser.com/q/821720/334516 . Belki map d<cr> <cr>:NERDTreeClose<cr>haritalama için?
muru

@muru: Teşekkürler, eşlemeniz iyi çalışıyor ve benimkinden daha az çirkin görünüyor :) SU'daki soru hakkında, dosyayı NERDTree arabelleğinde açmak istediğinden tamamen ilgili olmadığından emin değilim. yeni bir arabellek açın ve sonra NERDTree arabellek kapatın: Bir bölünmüş pencereler ile sona ererken oysa ben bölünmüş bir pencerede değil 2 tampon ile bitirmek istiyorum.
statox

Yanıtlar:


5

Soru çok fazla cevap vermediği için, netrw explorer'a geçmeden önce bir hafta boyunca kullandığım muru önerisiyle cevaplayacağım. (Elbette daha iyi bir seçenek cevabı gelirse, benimkini kabul edilen şekilde işaretlemekten memnuniyet duyarız ve yenisini kabul ederim)

Fikir aşağıdaki haritalamayı kullanmaktır:

map d<cr> <cr>:NERDTreeClose<cr>

Hangi genellikle yapılır gibi dosyayı açar ve sonra imleç nerede olursa olsun NERDTree arabelleği kapatan işlevi çağırır.

DÜZENLEME: Kısa süre önce NERDTree'ye geçtim ve çözümümü yeniden çalıştım: Daha önce önerdiğim haritalama çalışıyordu, ancak her arabellekte dolduğu gibi, oldukça can sıkıcı bir şey silmek istediğimde iki kez basmak zorunda kaldım . (Belki timeoutayarları değiştirebilirdim ama şu anda benim için ayarlanma şeklini seviyorum, ayrıca başka bir tuş kombinasyonuyla eşlemek istemedim).

Bu yüzden ilk çözümümü aşağıdaki satırlarla değiştirdim .vimrc:

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

Bu şekilde eşleme yalnızca NERDTreearabelleklerde oluşturulur ve diğer arabelleklerdeki iş akışımı karıştırmaz.

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.