ağ üzerinde zsh otomatik tamamlama joker


3

Zsh'ın en sevdiğim özelliklerinden biri, özellikle ağa bağlı bir makinede bir dosya adı doldurduğumda otomatik tamamlama özelliği. Ancak joker karakterleri (* gibi) nasıl ekleyebilir ve uzaktaki makineden otomatik olarak tamamlamasını nasıl sağlayabilirsiniz?

Örneğin, bir sunucuda bulunan dosya1, dosya2 ve dosya3'üm olduğunu varsayalım; Tüm bu dosyaları yerel makineme kopyalamak istiyorum.

scp server:~/fi<tab>

zsh sonra doğru otomatik olarak tamamlar

scp server:~/file

ama sonra joker karakter yapmaya çalıştığımda

scp server:~/file*<tab>

hepsi bana bip sesi çıkarır (dosya yolları yerel ise doğru çalışır). Bu işi yapan bir dizi zsh seçeneği var mı?

Yanıtlar:


0

GLOB_COMPLETE ayarının bunu değiştirmesi gerektiğini düşünüyorum.

setopt GLOB_COMPLETE

itibaren man zshoptions:

GLOB_COMPLETE

Mevcut kelime bir glob düzenine sahip olduğunda, genişlemeden kaynaklanan tüm kelimeleri eklemeyin, fakat tamamlama için eşleşmeler yaratın ve MENU_COMPLETE gibi bunlar arasında dolaşın. Eşleşmeler, kelimenin sonuna a * ’eklenmiş veya COMPLETE_IN_WORD ayarlandığında imlecine eklenmiş gibi üretilir. Bu aslında kalıp eşleştirme kullanır, globbing değildir, bu nedenle sadece dosyalar için değil, seçenekler, kullanıcı adları vb.

Desen eşleştiricisi kullanıldığında eşleştirme kontrolünün (örneğin, büyük / küçük harf duyarlı veya sabit eşleme) kullanılamayacağını unutmayın. Bu sınırlama yalnızca geçerli kelime bir kalıp içerdiğinde geçerlidir; GLOB_COMPLETE seçeneğinin basitçe açılması bu etkiye sahip değildir.


0

Sebep ne olursa olsun, uzak yolda scp / ssh ile kullanıldığında glob karakterinden kaçmalısınız.

scp server:~/file\*<tab>

Bu, örneğin bir glob kullanarak (glob tamamlama yapmak yerine) bir grup dosyayı taramak istiyorsanız da geçerlidir;

scp server:~/files/project.\* ~/localdir
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.