Funcionalidad de autocompletar terminal mejorada (similar a la de Matlab)

18

Si alguno de ustedes alguna vez utilizó Matlab, es posible que haya notado la funcionalidad de la ventana de comandos en ese programa. Me pregunto si es posible habilitar la misma funcionalidad en Mac Terminal.

Funciona así: suponga que ha utilizado dos comandos anteriormente en esta sesión de Terminal. Primero usaste ay cd ~luego a ls -la.

En cada terminal * nix, incluidas las Mac, si presiona el Up Arrowbotón, primero mostrará el ls -lacomando y, si lo presiona dos veces, el cd ~comando. Esto es genial. Pero, en Matlab, si primero escribe la letra cy luego presiona Up Arrow, no se mostrará ls, sino que irá directamente a cd ~. Esto ahorra mucho tiempo cuando tiene comandos grandes y una larga lista de comandos utilizados anteriormente.

¿Es posible?

perr0
fuente

Respuestas:

27

En un shell Bash, puedes presionar Control+ Rpara hacer una búsqueda inteligente inversa en el historial. Comience a escribir el comando y el shell se completará automáticamente con los comandos ingresados ​​previamente.

Luego puede presionar Enterpara ejecutar el comando nuevamente, usar la flecha hacia la izquierda o hacia la derecha para editar el comando, o seguir presionando Control+ Rpara recorrer otras posibles terminaciones.

Búsqueda inteligente inversa

Gerry
fuente
9

Guarde esto como ~ / .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 sería \e\e[Ay control-p \C-p. Puede ver las secuencias de escape de otras combinaciones de teclas presionando control-v.

Lri
fuente
1
Para los usuarios que aún no tienen ~/.inputrc, simplemente cree uno.
Sibbs Gambling
Debería ser la respuesta aceptada
ripper234
1
"\ e [A": comando no encontrado
Louis
2

Otra cosa que puede hacer es escribir !y luego la primera letra, y encontrará la más reciente. IE: cd ~se puede acceder con!c

Mark Robinson
fuente
1

Esta es una característica del shell. Control-R hará lo que usted describe, pero cambiar a un shell más moderno le dará mucho más. Eche un vistazo a Z-shell (zsh), hay una pequeña curva de aprendizaje, pero es muy poderosa.

Ɱark Ƭ
fuente
Creo que te refieres a Control-R.
jmk
1

zsh completará los comandos exactamente como en su ejemplo. Ni siquiera tiene que hacer nada más que usarlo para su shell.

Chris
fuente
0

Agregue estos a su .cshrc (si está usando tcsh) -

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

Luego haga source ~ / .cshrc para obtener exactamente la funcionalidad que describe.

No sé si hay un equivalente de perfil.

posible
fuente