Często używam open -a
polecenia w Terminalu, aby otwierać aplikacje przez ssh. Jak ustawić automatyczne uzupełnianie nazwy aplikacji?
terminal
auto-complete
daviesgeek
źródło
źródło
open -a /Applications/Textedit.app foo.txt
(Zakładam, że to właśnie próbujesz zrobić). Jeśli naciśniesz Tab po/A
z/Applications
, a następnie ponownie po Tab/Te
z/Textedit.app
potem, że obie części powinny uzupełni dla was jak przejść. Przyznaję, że nie jest idealna, ale może lepsza. To było za pomocą Bash.Odpowiedzi:
Trzecia wersja, która powinna teraz zarówno rozróżniać wielkość liter, jak i działać w cudzysłowie.
źródło
DVD Player
. Jakieś pomysły, co jest nie tak? Wygląda jak tabulator zamiast spacji ...IFS=$'\n'
. W każdym razie ponownie zredagowałem odpowiedź.mdfind
pomysł. Niezła praca nad optymalizacją i poprawkami.CoreServices
są jednak prawdopodobnie osobistymi preferencjami. Jaki jest jednak powódnospace
? Jeśli jest tylko 1 program, chcę od razu kontynuować otwieranie pliku. Po prostu osobiste preferencje? Masz pomysł na pozostały problem z cytowaniem? AFAICT, to jedyna rzecz, która pozostała do właściwego rozwiązania.-a
flagę na końcu, więc myślę, że-o nospace
to tylko osobiste preferencje. Może powinniśmy pingować Bretta Terpstry lub coś, co zakończy ten nerdfest ...Dodaj następujące elementy do swojego
.bash_profile
lub.bashrc
i uruchom nową sesję:Nie musisz niczego instalować. Działa to od razu po
bash
wyjęciu z pudełka.Będzie automatycznie uzupełniał nazwy programów tylko wtedy, gdy poprzednia opcja jest taka,
-a
a poza tym wykaże zachowanie domyślne, np. Zwróci listę wszystkich plików w bieżącym katalogu lub dokończy bieżący prefiks ścieżki.Wyniki są generowane z
system_profiler SPApplicationsDataType
, co jest najprostszym sposobem na uzyskanie wszystkich aplikacji, które można w ten sposób uruchomić w systemie w ten sposób. Lista jest przetwarzana w celu zwrócenia tylko nazw programów, które mogą zawierać spacje i mogą różnić się od nazw pakietów (nawet przy ignorowaniu.app
sufiksu)Sposób użycia: Wpisz
open -a
, następnie spację, a następnie naciśnijTab
lubEsc
(dwa razy w moim systemie, nie jestem pewien, czy jest wszędzie).Przykład pokazujący wszystkie aplikacje pomocnicze dla mojego skanera:
Wady i problemy tego rozwiązania:
W twoim systemie jest mnóstwo programów, o których możesz nie wiedzieć, jak wszystko w twoim systemie
/System/Library/CoreServices
. Możesz nie chcieć wymienić wszystkich. OTOH, to naprawdę łatwo zobaczyć i uruchomić npCharacterPalette
lubKeyboardViewer
w ten sposób. * Skonfigurujmdfind
połączenia odpowiednio z-onlyin
argumentem.To trochę powolneTeraz używasystem_profiler SPApplicationsDataType
. Być może trzeba poczekać sekundę lub dwie, zanim pojawi się zakończenie.mdfind
do szybkiego pobierania programów. Dzięki @LriMoże obsługiwać spacje w nazwach aplikacji i nazwy programów w cudzysłowie, ale jest raczej hackerski. Wymaga to, aby cytat był pierwszym znakiem: dopóki
Scan" to "P
jest ważnybash
, ten program go nie wykryje. Uzupełnianie nie działa po spacji lub (np.Scan\ to
), W takich przypadkach używaj cudzysłowów ("Scan to
). Pomoc dla zbiegłych przestrzeni jest tylko dobry, aby zakończyćDVD
sięDVD\ Player
.źródło
mdfind 'kMDItemKind==Application'
byłoby szybciej? Jeślicompletion-ignore-case
jest włączony, grep powinien prawdopodobnie również ignorować wielkość liter.Programowalne autouzupełnianie na ratunek! Potrzebowałem dużo kopiowania ze strony głównej Bash Completion , którą i tak warto zainstalować, aby uzyskać dużo magii autouzupełniania. Jeśli to zrobisz, będziesz potrzebować tylko ostatniej funkcji (
_open
) i polecenia inicjalizującego od dołu.Dodaj następujące elementy
.bashrc
:źródło
.bashrc
. Teraz, jak mogę uzyskać autouzupełnianie? Co mam wcisnąć, aby autouzupełnianie? (Przepraszam, nie mogę odczytać kodu)DVD Player.app
). Wyświetla również katalogi/Applications
(jakiWork 09
osobne wpisyiWork
i09
), ale nie zawiera programów w nich zawartych.Jest to domyślnie włączone w powłoce Zsh , o ile oczywiście masz włączone uzupełnianie. Zsh jest zawarty w OS X.
Wszystko, co musisz zrobić, to umieścić
autoload -Uz compinit; compinit
w swoim ~ / .zshrc lub włączyć uzupełnianie poprzez menu konfiguracji pierwszego uruchomienia.Zsh to właściwie superset Bash, więc nie powinieneś się uczyć niczego nowego. Nawet twoje skrypty prawdopodobnie będą działać!
źródło