Używam bash i zastanawiałem się, czy jest jakaś wtyczka w bash lub innej powłoce, która pozwala mi to robić
cat tfnislong.txt
+ [tab]
uzupełnienia, cat ThisFileNameIsSoLong.txt
tak jak uzupełnianie tabulacji w Sublime Text.
bash
shell
tab-completion
lasy
źródło
źródło
cat Th
+tab
?Odpowiedzi:
Znam https://github.com/mgalgs/fuzzy_bash_completion, który jest wiązką funkcji powłoki używanych z
complete
.Myślę, że prawdopodobnie moglibyśmy zrobić trochę lepiej, być bardziej zwięzłym. Nadszedł czas, aby otworzyć swój .bashrc lub .profile ...
Podstawowy hak, którego używamy to:
complete -o nospace -o filenames -F fuzzypath cd ls cat
Opcja -F oznacza użycie funkcji powłoki do uzupełniania tabulacji, gdzie opcje są ustawione w
COMPREPLY
zmiennej. Na przykład:gdzie
DIRPATH
jest wszystko, co wpisujesz przed ostatnim / na ścieżce iBASENAME
gdzie aktualnie znajduje się kursor.FILTER
tam, gdzie pojawia się rozmytość. Zasadniczo bierzBASENAME
i wstawiaj znak.*
między każdym znakiem, aby utworzyć wyrażenie regularne fuzz.Reszta to po prostu łączenie wyrażenia regularnego z ls do wyprodukowania
COMPREPLY
. Możesz znaleźć tutaj sprytniejsze rzeczy, może zfind
.Uważam również, że http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.html jest przydatny.
źródło
Fzf może ci się przydać. Jest to uniwersalna wyszukiwarka rozmyta napisana w Rubim, która może być używana z dowolną listą rzeczy: plikami, procesami, historią poleceń, gałęziami git itp.
Jego skrypt instalacyjny ustawi
CTRL-T
przypisanie klawiszy dla twojej powłoki. Poniższy plik GIF pokazuje, jak to działa.źródło
fzf
.. (tput sc), a później przywrócić go za pomocątput rc
..Aby przejść do drugiej odpowiedzi, możesz zajrzeć do zsh. Jest wstecznie kompatybilny z bash, dzięki czemu można go używać jako zastępstwa, ale obsługuje znacznie rozszerzone funkcje, a jedną z nich jest znacznie ulepszone uzupełnianie kart z uwzględnieniem kontekstu.
Często zadawane pytania na temat ukończenia zsh dotyczą przypadków użycia, ale uważam, że według twojego przykładu najbardziej zainteresowałbyś się tą
COMPLETE_IN_WORD
funkcją. Nie jest to pożądane zachowanie, ale jest blisko. Najważniejsze jest to, że istnieje wiele sposobów rozszerzenia podstawowej funkcjonalności w bardziej przystępny sposób niż użycie bash.Oto rozmyte rozszerzenie dopasowania, które przybliżałoby to, co chcesz bardziej szczegółowo; dopasowanie zsh-fuzzy
Aby zapoznać się z niektórymi pomysłami, możesz zapoznać się z popularnym frameworkiem oh-my-zsh , który ma wiele funkcji do zarządzania zsh i rozszerzania go. Najprawdopodobniej jest to więcej, niż chcesz, ale pod wtyczkami zauważysz skrypty autouzupełniania dla różnych ról. Aby dowiedzieć się o możliwościach.
źródło