Réponses:
Vous pouvez appuyer sur Ctrl- Alt- epour exécuter la fonction readline shell-expand-line
qui effectuera des extensions d’alias, d’historique et de mots. Notez que sur certains claviers Metan'est pas Alt. Vous devrez peut-être appuyer Escalors Ctrl-e
Les fonctions alias-expand-line
et history-and-alias-expand-line
ne sont pas liées par défaut, mais vous pouvez les lier en ajoutant des lignes similaires à celles-ci dans votre ~/.inputrc
fichier.
"\e\C-l": alias-expand-line
ce qui ferait Ctrl- Alt- l(minuscule "ell") effectuer uniquement le développement de pseudonyme.
"\C-i": "\e\C-l\e\e"
qui crée une macro qui exécute à la fois alias-expand-line
et complete
. Cela dépend de la liaison de ma réponse ci-dessus et que la liaison par défaut pour Esc-Esc reste en place. Vous pourrez toujours faire Esc-Esc si vous voulez faire l'achèvement par défaut.
ESC C-e
travaille pour Bash, mais C-x a
travaille pour Zsh. Également testé sur OS X.
Control-x: history-and-alias-expand-line
.
Cela pourrait en fait être un moyen beaucoup plus simple de faire ce que vous essayez ( bash
version> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
La man
page de: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
le shell interpréterait "ll" comme une commande / fonction "ll" qui n'existe probablement pas.
Cela ne fonctionne pas. Mais je suppose / espère que quelque chose comme ceci peut être fait pour faire ce que vous voulez faire. Vous devrez utiliser votre propre script d'achèvement. Voici comment vous en faites un:
_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
Maintenant, recherchez le fichier complet bash_completion ( http://caliban.org/bash ) et placez le script mentionné ci-dessus dans un fichier du répertoire bash_completion.d que le script que vous obtenez à partir des références d’URL. Faites-moi savoir si cela ne fonctionne pas.
Merci.
Pour les personnes ayant installé zsh à la recherche d'une solution simple, globalias est peut-être votre ami.
Développe toutes les expressions globales, sous-commandes et alias (y compris global).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
installer simplement ajouter "globalias" à votre liste de plugins .zshrc
plugins=(... globalias)
Ensuite, appuyez simplement sur
SPACE
pour déclencher le développement d'une commande que vous avez écrite.Si vous souhaitez uniquement insérer un espace sans développer la ligne de commande, appuyez sur
CTRL+SPACE