Uzupełnianie zakładki nazwy pliku Bash

2

Zauważyłem czasami, że uzupełnianie kart jest pomocne w filtrowaniu bash. Jestem programistą Java i często używam poleceń javai javacw terminalu do szybkich lub zdalnych zadań.

Powiedzmy, że mam dwa zwykłe pliki w katalogu: MyProgram.javaiMyProgram.class

Jeśli poproszę bash do tabcomplete z prefiksu polecenia java M, wypełnia się od razu java MyProgram, jest to pomocne. Oczywiście albo bash jest skonfigurowany tak, aby akceptował tylko uzupełnienia * .class dla javapolecenia (i wie, aby usunąć rozszerzenie pliku), lub javapolecenie w jakiś sposób mówi bash.

Chciałbym to samo osiągnąć za pomocą edytora tekstu, więc mógłbym wpisać nano Mi mieć tabulację kompletną nano MyProgram.javazamiast wstrzymywać się nano MyProgram., czy można powiedzieć, czarna lista * .class z zakładki nano ukończona?

Przede wszystkim chciałbym wiedzieć, czy jest to konfiguracja bash, czy coś po stronie programu.

rysie
źródło

Odpowiedzi:

3

javama osobny skrypt autouzupełniania, który zastępuje domyślny mechanizm uzupełniania. W mojej dystrybucji (Arch Linux) jest on zainstalowany /usr/share/bash-completion/completions/java.

Aby zastąpić zachowanie uzupełniania tabulatorów, możesz utworzyć taki skrypt. Jeśli chcesz, aby wszystkie .classpliki były ignorowane dla każdego polecenia, możesz ustawić FIGNOREzmienną (np. W swoim ~/.bashrc). Przykład: FIGNORE=.class. Ze strony podręcznika bash:

FIGNORE Rozdzielona
dwukropkami lista sufiksów, które należy zignorować podczas uzupełniania nazw plików (patrz READLINE poniżej). Nazwa pliku, której sufiks pasuje do jednego z wpisów w FIGNORE, jest wykluczona z listy zgodnych nazw plików. Przykładowa wartość to „.o: ~”.

Lekensteyn
źródło
ahh właśnie tego szukałem,
wielkie