Kısmi yolların Zsh benzeri sekme tamamlanması


11

Vim'deki dosya adları için Bash benzeri kısmi tab-complete ile ilgili

Gerçekten harika özelliklerinden biri zsh, örneğin, yazın olmasıdır ls /u/s/m/m/who.1basın Tabve karşı uygulaması gerekir ls /usr/share/man/man1/who.1.gz. Buna alıştıktan sonra /u<tab>/s<tab>/m<tab>/m<tab>..., özellikle de kısmi yolun tamamı yalnızca bir gerçek yola çözümlenebiliyorsa, ancak her bir bileşenin birden fazla tamamlaması olduğunda, geri dönmek gerçekten sinir bozucu . Bu, Vim'de, örneğin :eveya kullanılırken elde edilebilir :cdmi?

Zsh'de, değiştirilmiş (yani, olur ) ile cd foo bareşdeğer bir yola gitmek için kullanma gibi başka yararlı yolla ilgili özellikler vardır . Bunları da getiren bir çözüm varsa (esas olarak kabukla ilgili görevleri çok iyi yapan bir kabuğa teslim etmek), harika olurdu.foobar/blah/foo/baz/yada/blah/bar/baz/yada


1
Tam olarak sorduğunuza ulaşan hiçbir şeyin farkında değilim, ancak dosyaları benzer şekilde açmanıza izin veren çeşitli bulanık dosya bulucular var. CtrlP'yi tercih ediyorum, ancak Command-T de var ve eminim adını unuttuğum başkaları da var.
Zengin

1
@Rich Tab'ı bir düzine kez ezmek zorunda kalmadığım sürece mutlu olurum.
muru

SO hakkında zaten benzer bir soru var.
romainl

Yanıtlar:


6

Vim'in yerel güçlerini gerçekten bulana kadar CtrlP ve diğer ilgili eklentileri çok daha önce kullanıyordum. Harici bir eklenti gerektirmeden bunu yapmanın birkaç yolunu açıklayayım:

  1. :e, güzel bir şey: e gibi bir şey yapabilirsiniz :e /u*/s*/m*/m*/<Tab>ve vim sizin için otomatik olarak genişletecektir :e /usr/share/man/man. Bu, yayınladığınızdan çok daha kısa ve basittir, ancak daha iyi bir yol yapmaktır :e /usr/**/man<Tab>, bu şekilde yinelemeli olarak altına bakacak /usrve tüm eşleşen yolları listeleyecektir, bu, setin ne kadar büyük olduğuna bağlı olarak zaman alabilir, ancak proje harikalar yaratıyor çünkü böyle bir şey yapabilirsiniz :e ap**/jav**/user<Tab>ve tüm eksik yolları tamamlar ve size eşleşen yolların bir listesini verir ve süper harika çalışır.
  2. :b, Mevcut arabellekleri açmak için. Bu gerçekten güçlüdür, çünkü varsayılan olarak kısmi kabul eder, böylece sadece bir şey yapabilirsiniz :b usr*man<Tab>ve arabellek listesine zaten yüklenmişse dosya adını tamamlayacaktır. Bu özellikle iyi çünkü anında ve gerçekten hızlı. Ayrıca tpope / vim-obsession ve dhruvasagar / vim-prosession yardımıyla vim oturumlarını yoğun bir şekilde kullanıyorum , tampon listesinde açtığım tüm dosyaları saklıyor ve vim var ve geri döndüğümde bile mevcutlar proje dizini.

1
/u*/s*/m*/m*/<Tab>eskiden böyle bash etrafında çalışıyordum. Bir mil kadar zsh'ın yerini tutmaz. /usr/**/man<Tab>dosya sisteminin tamamını açtığınızda korkunç derecede yavaştır, ancak küçük projeler için yararlı olabilir. Yanlış anlamadığım sürece :b, yeni dosyalar açmak için değildir.
muru

muru haklısınız, zsh'ın yerini tutmaz, ancak her şeyi kendiniz yazmaktan daha iyidir, daha kolay hale getirmekle ilgilidir, **gerçekten de yavaştır, ancak normal projeler için iyi çalışır. :bmevcut açık arabellek içindir, bu yüzden oturumları kullanmak yardımcı olur.
Dhruva Sagar

5

vim-zsh-yol-tamamlama , tam olarak ne istediğinizi (en azından ilk bölüm) yapmayı amaçlamaktadır, ancak hiç denemedim. ( Romainl yazarı tarafından bir SO cevabına bağlanana kadar bunu duymamıştım , ancak belgeleri de bazı sınırlamalardan bahsediyor.

Buna ek olarak, dosyaları açmak için benzer bir şey elde eden çeşitli bulanık dosya bulucular vardır.

Bunun için favori eklentim CtrlP . Açılış dosyaları için kullanıldığında, kimin tam yolları doğru içinde yazdığınız karakterler içeren herhangi dosyaları arar sırayla-sen yok olması senin kadar yolun her bileşeni (ve tüm yol ayırıcılar) bölgelerinde yazın örneğiniz var, ancak yaparsanız mükemmel çalışır. Aynı zamanda son kullanılan dosyaları ve şu anda açık arabellekleri ve daha fazlasını açmak için aynı arabirimi kullanır.

Varsayılan olarak, <c-p>CtrlP istemini açmak için normal modda eşlenir. Komut isteminde, karakterleri yazarken daraltılan dosyaların bir listesi görüntülenir. EnterSeçili dosyayı açmak için herhangi bir noktada tuşuna basabilir veya seçimi geçerli olarak eşleşen dosyalar listesinde yukarı ve aşağı taşımak için <c-k>ve <c-j>tuşlarını kullanabilirsiniz .

Bir başka popüler alternatif Command- T'dir, ancak VimScript'te uygulandığından CtrlP'yi tercih ederim; Command-T bir Ruby bileşenine sahiptir.

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.