Completamento più intelligente del tab di Bash


6

Come uno switcher recente di Ubuntu (il più recente switch backer, se è una parola) mi trovo nella riga di comando molto più di quando ero un utente mac prima. Una cosa che mi è piaciuta di più di Ubuntu è stata la compilazione e l'esecuzione di programmi Java per la classe, il completamento del mio tab era davvero intelligente. Quando ho avuto bisogno di compilare la mia classe se avessi una directory che assomigliava a:

Example.java
Example.class
Client.java
Client.class

e avevo bisogno di compilare Client.java per tenere conto delle modifiche più recenti che avrei digitato:

javac C [TAB]

e completerebbe a

javac Client.java

ignorando i file .class perché non puoi eseguire javac su una classe .class. Anche quando volevo eseguire il file digitando

java C [TAB]

risulterebbe in

java Client

senza periodo Questo è stato un modo molto intelligente di completare il tab che mi sono così abituato ora che mi fa impazzire quando toccherò la scheda e mi darà il Cliente. senza in realtà completare a quello che ho bisogno di essere.

Quindi c'è un modo per rendere più intelligente il completamento del bash di Mac in modo che abbia lo stesso effetto?

Risposte:


4

* pacchetti nix come bash_completion può essere installato con gestori di pacchetti di terze parti. suggerisco homebrew , ma Fink e MacPorts fornire anche il bash_completion pacchetto. Se non gestisce automaticamente la situazione Java che descrivi, postback o leggi la pagina man.


1

Ti suggerirei di impostare la shell predefinita su zsh invece di bash. Viene fornito in bundle con Mac OS X ed è completamente compatibile con bash, ma aggiunge alcune funzionalità interessanti, incluso il completamento di schede molto più intelligenti.

Provalo con chsh /bin/zsh

C'è anche un ottimo framework per la gestione del tuo ambiente zsh chiamato oh-my-zsh . È un ottimo punto di partenza per alcune potenti personalizzazioni.


Interessante ... non avrei mai pensato di cambiare completamente il guscio. Non perderà la maggior parte delle mie attuali configurazioni bash per quanto riguarda gli alias e le esportazioni variabili?
CaldwellYSR

@CaldwellYSR Zsh è generalmente più potente di bash (anche se bash può fare il lavoro anche in questa particolare istanza). Zsh non è completamente compatibile con bash, quindi potresti perdere alcune delle tue personalizzazioni. Gli alias e le esportazioni variabili possono essere copiati, ma altre cose come le impostazioni dei prompt dovrebbero essere rifatte.
Gilles

Non è sicuro suggerire che l'OP cambi totalmente la propria configurazione è un suggerimento ragionevole.
josh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.