Tamam, biraz arka plan: Bir Mac kullanıyorum ve CLI'de mümkün olduğunca çok yapıyorum.
Özellikle, bir USB çubuğuna cp
veya mv
bir dosyaya sık sık giriyorum ve hemen çıkarmak (bağlantısını kesmek ve bağlantısını kesmek) istiyorum. Bu, genellikle (10.7'de) boş bir masaüstü alanına (genellikle en az iki boşluk uzaklıkta) gitmeyi, diski seçmeyi ve "command-e" tuşuna basmayı gerektiren bir kaç tuş vuruşu ile gerçekleştirilebilir. Açıkçası, bu sökülme prosedürü, birkaç büyüklük sırası ile, sürecin en zaman alıcı ve sıkıcı kısmıdır.
Sadece yazabilmek çok daha doğal ve verimli olurdu, örneğin:
ej<tab> J<tab>
USB çubuğumun / Volumes / Jefferson'a takıldığını söyle Benim 6 tuş vuruşlarından almak için beklediğim şudur:
eject /Volumes/Jefferson
Bu komut çalıştırılmalıdır:
diskutil unmount /Volumes/Jefferson
Bu yüzden hoş bir küçük fonksiyon yazdım:
eject() {
diskutil unmount /Volumes/$1
}
Ve onunla gitmek için bir tamamlama işlevi:
compdef '_files -g "/Volumes/*"' eject
Ancak bununla ilgili bir sorun var. _files
İşlevi tam yolları oluşturur. Şimdi, "çıkarma" işlevimdeki satırı değiştirebilirim diskutil unmount $1
ve işler işe yarayacaktır, ancak yol / Volumes / ile başladığından, bağlama noktası adının ilk harfini yazma yeteneğim yok. Örneğin J<tab
, yazarsam, PWD'deki dosyalar için otomatik tamamlama alırım. /Volumes/J<tab>
İstenilen tamamlamayı elde etmek için yazmak zorundayım .
Peki, dosya yollarını tam yollar oluşturmak yerine önceden tanımlanmış, belirli bir konumdan alan bir tamamlama işlevi var mı?
Bunu gerçekten 6 tuşa kadar düşürmek istiyorum.