Fonctionnalité de saisie semi-automatique améliorée du terminal (similaire à Matlab)

18

Si l'un d'entre vous a déjà utilisé Matlab, vous avez peut-être remarqué la fonctionnalité de la fenêtre de commande dans ce programme. Je me demande s'il est possible d'activer la même fonctionnalité dans Mac Terminal.

Cela fonctionne comme ceci: supposons que vous ayez déjà utilisé deux commandes dans cette session Terminal. Vous avez d'abord utilisé un cd ~, puis un ls -la.

Dans chaque terminal * nix, y compris les Mac, si vous appuyez sur Up Arrow, il affichera d'abord la ls -lacommande et, si vous le frappez deux fois, la cd ~commande. C'est bien. Mais, dans Matlab, si vous tapez d'abord la lettre cpuis appuyez sur Up Arrow, elle ne s'affichera pas ls, mais allez directement à cd ~. Cela vous fait gagner beaucoup de temps lorsque vous avez de grosses commandes et une longue liste de commandes précédemment utilisées.

C'est possible?

perr0
la source

Réponses:

27

Dans un shell Bash, vous pouvez appuyer sur Control+ Rpour effectuer une recherche intelligente inverse dans l'historique. Commencez à taper la commande et le shell se complétera automatiquement avec les commandes entrées précédemment.

Ensuite, vous pouvez soit appuyer sur Enterpour exécuter à nouveau la commande, utiliser la touche fléchée gauche ou droite pour modifier la commande, ou continuer à appuyer sur Control+ Rpour parcourir les autres complétions possibles.

Recherche intelligente inversée

Gerry
la source
9

Enregistrez-le sous ~ / .inputrc:

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

Option-up serait \e\e[Aet contrôle-p \C-p. Vous pouvez voir les séquences d'échappement d'autres combinaisons de touches en appuyant sur control-v.

Lri
la source
1
Pour les utilisateurs qui n'en ont pas encore ~/.inputrc, créez-en un.
Sibbs Gambling
Devrait être la réponse acceptée
ripper234
1
"\ e [A": commande introuvable
Louis
2

Une autre chose que vous pouvez faire est de taper !puis la première lettre, et elle trouvera la plus récente. IE: cd ~accessible avec!c

Mark Robinson
la source
1

C'est une caractéristique du shell. Control-R fera ce que vous décrivez, mais le passage à un shell plus moderne vous apportera bien plus. Jetez un oeil à Z-shell (zsh), il y a un peu de courbe d'apprentissage, mais il est très puissant.

Ɱark Ƭ
la source
Je pense que vous voulez dire Control-R.
jmk
1

zsh exécutera les commandes exactement comme dans votre exemple. Vous n'avez même rien d'autre à faire que de l'utiliser pour votre shell.

Chris
la source
0

Ajoutez-les à votre .cshrc (si vous utilisez tcsh) -

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

Ensuite, faites source ~ / .cshrc pour obtenir exactement les fonctionnalités que vous décrivez.

Je ne sais pas s'il existe un équivalent .profile.

possible
la source