Bir dosyayı bir Terminal penceresine sürükleyip bırakmak, zsh 5.2'nin altındaki yoldan kaçmaz


3

OS X altında, bir dosyayı Finder'dan (veya başka bir yerden) bir Terminal penceresine sürükleyip bırakabilirsiniz ve dosyanın yolu, girmişsiniz gibi eklenir. Son zamanlarda, boşluk içeren dosya adlarının doğru bir şekilde işlenmesi durdu: Daha önce boşluk içeren dosya yolu, Terminal çift tırnak içine alınmış bir sürüm ya da her boşluktan önce bir ters eğik çizgiden önce alınmış olur. Şimdi tüm dosya yolu henüz boşaltıldı ve herhangi bir boşluk içeriyorsa geri dönüp kendimden kaçmam gerekiyor.

“Birlikte açılmış mermiler” ayarıyla oynamıştım ve kabuğun /bin/bash(GNU bash 3.2.57 (1) - tekrar bırak) veya /bin/zsh(zsh 5.0.8) olduğu zaman doğru kaçışın gerçekleştiği görülüyor. elle kurulmuş /usr/local/bin/zsh(zsh 5.2). OS X 10.11.2'deyim.

Zsh’de Terminal’de sürükleyip bırakarak karışıklığa neden olabilecek bir değişiklik oldu mu? Yoksa Terminal, benim zsh'ımı içermeyen bir çeşit beyaz liste mermisini kullanıyor mu?

Düzenleme: Ben zsh 5.0.8 de yükledim /usr/local/bin/zshve dosya isimleri bu kabuk için düzgün kaçtı. 5.0.8 ve 5.2 sürümleri arasında zsh üzerinde yapılan bazı değişiklikler bu çalışmayı durdurdu.

Yanıtlar:


6

Bu davranışa, zsh'in 5.1 sürümünden itibaren varsayılan olarak açık olan parantez içindeki pasta özelliğinden kaynaklandığı görülmektedir . Ekledim eğer buldum

unset zle_bracketed_paste

benim zshrc için sonra dosyaları Terminal üzerine bırakarak zsh 5.2 ile düzgün çalışır.

( Bu blog yazısı , tüm yapıştırılmış yapıştırma özelliğini kapatmadan dosyaları bırakmayı desteklemek için kullanılabilecek gibi görünen, köşeli yapıştırma-sihirinden bahseder. Bunun gerçekleşmesi için kod yazmanız gerekeceğini düşünüyorum; -paste-magic sorunumu çözmedi.)


Bunu zsh dosyamın sonuna eklemek zorunda kaldım; başlangıçta işe yaramadı. Nedenini belirlemek için uğraşmadım ...
Marshall Eubanks

2

@ Bdesham'ın cevabında bahsedildiği gibi , Zsh 5.1, terminal tabanlı programların yapıştırılan / sürüklenen metni kullanıcının karakterlerini yazarak tek tek ayırt etmesini sağlayan terminalin “Parantezli Yapıştırma Modu” nu kullanmaya başlamıştır.

Terminal (en azından OS X El Capitan 10.11.x'ten itibaren), Parantezli Yapıştırma Modu açıkken yapıştırılmış / sürüklenmiş dosya yollarının kabuklarını alıntı yapmaz çünkü Zsh 5.1'den önce BPM yalnızca Emacs gibi tam ekran editörler tarafından kullanılır. ve normalde kabuk alıntılama gerektirmeyen Vim.

Kontrol değiştirici tuşuna basarak, yapıştırırken / sürüklerken kabuk alıntı yapmayı zorlayabilirsiniz.


Ve tutma komutu, eğer bir dizinse öğenin "cd / path / to / dizinini" ya da bir başkası ise verir. Güzel!
Marshall Eubanks

10.10'dan sonra giderilen bir terminal meselesi. Etrafında basit bir eklenti ile kesebilirsin: github.com/fish-shell/fish-shell/issues/4323
1110101001
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.