Odpowiedzi:
Możesz nacisnąć Ctrl- Alt-, eaby wykonać funkcję readline, shell-expand-line
która wykona alias, historię i rozszerzenia wyrazów. Zauważ, że na niektórych klawiaturach Metatak nie jest Alt. Być może trzeba nacisnąć Escnastępnie Ctrl-e
Funkcje alias-expand-line
i history-and-alias-expand-line
nie są domyślnie powiązane, ale można je powiązać, dodając do ~/.inputrc
pliku wiersze podobne do poniższych .
"\e\C-l": alias-expand-line
co sprawiłoby, że Ctrl- Alt- l(małe litery „ell”) wykonują tylko rozwinięcie aliasu.
"\C-i": "\e\C-l\e\e"
która tworzy makro, które wykonuje zarówno alias-expand-line
i complete
. Zależy to od powiązania z mojej powyższej odpowiedzi i od tego, że domyślne powiązanie dla Esc-Esc pozostaje na swoim miejscu. Nadal będziesz mógł wykonać Esc-Esc, jeśli chcesz wykonać domyślne zakończenie.
ESC C-e
działa dla Bash, ale C-x a
działa dla Zsh. Przetestowano również w systemie OS X.
Control-x: history-and-alias-expand-line
.
To może być znacznie prostszy sposób na robienie tego, co próbujesz ( bash
wersja> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
„s man
strona: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
powłoka interpretowałaby „ll” jako polecenie / funkcję „ll”, co prawdopodobnie nie istnieje.
To nie działa. Ale zgaduję / mam nadzieję, że coś takiego można zrobić, aby zrobić to, co chcesz. Będziesz musiał użyć własnego skryptu ukończenia. Oto jak to zrobić:
_ll()
{
COMPREPLY=(ls -l)
#The next line does not work. I just hope there were a way to replace that word
COMP_WORDS[COMP_CWORD-1]="ls -l"
}
complete -F _ll ll
Teraz źródłowy pełny plik bash_completion ( http://caliban.org/bash ) i umieść wyżej wspomniany skrypt w pliku w katalogu bash_completion.d, który skrypt otrzymałeś z odnośników do adresu URL. Daj mi znać, jeśli to nie zadziała.
Dzięki.
Dla osób, które zainstalowały zsh i szukają prostego rozwiązania, globalia mogą być twoim przyjacielem
Rozwija wszystkie wyrażenia globalne, podkomendy i aliasy (w tym globalne).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
aby zainstalować, po prostu dodaj „globalias” do listy wtyczek .zshrc
plugins=(... globalias)
Następnie naciśnij przycisk,
SPACE
aby uruchomić rozwinięcie napisanego polecenia.Jeśli chcesz wstawić spację bez rozwijania wiersza poleceń, naciśnij
CTRL+SPACE