Personalice las teclas arriba y abajo para que coincidan con la funcionalidad cmd (punto en el tiempo)

Personalice las teclas arriba y abajo para que coincidan con la funcionalidad cmd (punto en el tiempo)

¿Cómo personalizo Bash para que las teclas arriba y abajo sean las mismas que en cmd?

P.ej

$echo command1
$echo command2
$echo command3
$echo command4

Tanto en Bash como en cmd, al presionar , , se ejecutará .ENTERecho command2

Sin embargo, al presionar posteriormente la tecla abajo en cmd irá directamente al comando posterior, es decir echo command3. Presionar la tecla hacia abajo en Bash no hace nada. cmd mantiene el historial de un momento determinado (similar a los botones Atrás y Adelante en un navegador web), pero Bash no.

De manera similar con cmd, al presionar la tecla arriba dos veces en cmd se devuelve echo command1, mientras que al hacer esto en Bash se devuelve echo command3.

Hay muchas ocasiones en las que deseo disculpar alguna cadena de comandos que previamente ingresé en orden. Es muy útil en cmd que puedo desplazarme hacia atrás en el historial hasta el primero de la secuencia y luego , , ENTER, , ENTER, ...ENTER

Sin embargo, no puedo encontrar una forma similar de hacer esto en Bash. ¿Es posible modificar ~/.inputrcalgún otro archivo de alguna manera para lograr esto?

Respuesta1

Aunque personalmente no me gustaría hacerlo porque estoy acostumbrado al historial de bash, puedo ver por qué la gente querría hacerlo. He investigado esto antes, para un colega en el trabajo, que era nuevo en *nix y quería una funcionalidad similar a DOS en un xterm, y entonces, como ahora, no parece haber una solución.

Acabo de hacer otra búsqueda exhaustiva y no encuentro nada obvio, aparte de:

Curiosamente, hay muchas maneras de hacer que cmd sea más bash como, por ejemplo,Función similar a Bash History para el símbolo del sistema de Windows, pero tristementeno de la otra manera.

El principal problema es, para decirlo (demasiado) simple, que la funcionalidad de la tecla del cursor (y cómo interactúa con el historial) está integrada en el código fuente de Bash, y las secuencias de comandos, los alias y las funciones del shell no pueden anular ese hecho 1 . Lo que necesitarías es unreescritobash, con diferentes funciones de tecla de cursor [¿conmutables?] incorporadas, una especie de "DOSBash", por así decirlo.

Tal vez exista la oportunidad de atender un nicho de mercado y alguien eventualmente satisfaga esa necesidad, pero no aguantaría la respiración.


1 Si me equivoco y es posible anular la funcionalidad de la tecla del cursor mediante un simple cambio en el archivo de recursos, estaría encantado si alguien pudiera aclararme.

Respuesta2

El truco que uso, tal como está, es simplemente repetir el mismo número de :

$ echo command1
$ echo command2
$ echo command3
$ echo command4

Si quiero repetir la secuencia desde echo command 2hasta echo command4, simplemente presiono 3 veces para llegar a echo command2, y luego 3 veces más para llegar a echo command3y 3 veces más para echo command4.

Entonces, si ha retrocedido N elementos en su historial presionando N veces, presionarlo N veces nuevamente lo llevará al siguiente comando cada vez porque se insertó el nuevo que ejecutó.

información relacionada