Funcionalidad mejorada de autocompletado de Terminal (similar a Matlab)

Si alguno de ustedes alguna vez usó 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í: supongamos que ha utilizado dos comandos anteriormente en esta sesión de Terminal. Primero usaste un cd ~y luego un ls -la.

En todas las terminales *nix, incluidas las de Mac, si presiona Up Arrow, 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 le 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?

Respuestas (6)

En un shell Bash, puede presionar Control+ Rpara realizar 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 tecla de flecha izquierda o derecha para editar el comando, o seguir presionando Control+ Rpara recorrer otras posibles finalizaciones.

Búsqueda inteligente inversa

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.

Para los usuarios que aún no tienen ~/.inputrc, simplemente cree uno.
"\e[A": comando no encontrado

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

Esta es una característica del caparazón. 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 poderoso.

Creo que te refieres a Control-R.

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

Agréguelos 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 .profile.