
A menudo estoy compilando cosas y, por lo tanto, repitiendo el mismo comando una y otra vez, por lo que me gustaría beneficiarme de mi "memoria visual" y tener una especie de botón de "repetir el último comando" adjunto a una terminal. Más precisamente, así es como lo veo:
- Mi terminal "especial" sería como un emulador de terminal estándar, con una línea de entrada adicional en la parte inferior, que tendría un botón "ejecutar" adjunto. Al hacer clic en el botón se ejecutará el comando.sinborrándolo.
- Tal vez incluso se podría apilar una cantidad arbitraria de dichos comandos (ya que a menudo necesito alternar entre 2 o 3 comandos).
Sé que puedo usar solo ↑Enterel teclado para rehacer el último comando, pero lo que sucede a menudo es que olvido que tuve que escribir otro comando (para arreglar algo, o lo que sea), por lo que ↑no aparece el comando correcto del historial. Entonces, en lugar de ser un reflejo, tengo que leer (al menos hojear) el comando antes de presionar Enter.
¿Existe tal artilugio en alguna parte? A menudo uso varias terminales precisamente para asegurarme de que cada una tenga siempre el comando "correcto" como último, pero mis habilidades Alt+ Tabgeneralmente me hacen ir a la ventana equivocada. Y necesito información del terminal, como el entorno y cwd, por lo que no puedo simplemente intentar "integrarlo" en mi editor de código. Quiero decir, usar Alt+ F2y luego Enterno funcionaría (ya que también necesito leer la salida del terminal). Solo quiero poder utilizar lo mejor del teclado y de la memoria visual (mediante clics) al mismo tiempo.
Respuesta1
Creo que la expansión de la historia podría ser muy útil aquí. Por ejemplo, al escribir !p
se ejecutará el último comando que comience con 'p'. De manera similar !vi
ejecutará el último comando que comience con 'vi', y así sucesivamente. Más informaciónaquí. Si no está seguro de cuál de ellos fue el último, puede configurar la opción de shell histverify
( shopt -s histverify
), para poder editar (o inspeccionar) el comando antes de ejecutarlo. Más sobre estoaquí.
Alternativamente, puede utilizar la función de búsqueda del historial. En bash, presione Ctrl+R
y escriba el comando que desea encontrar en el historial (comenzando con el más reciente que coincida con los criterios). Al presionar Ctrl+R
repetidamente se recuperarán los comandos más antiguos que coincidan con sus criterios. Más informaciónaquíyaquí
Si está interesado, puede modificar el inputrc de su línea de lectura, de modo que las flechas arriba/abajo realicen la búsqueda del historial por usted. Más informaciónaquíyaquí.
Respuesta2
Eche un vistazo a la funcionalidad del historial de su shell. En mi zsh:
!!
repite el último comando.
Escriba history
para echar un vistazo a las últimas entradas.
Para obtener el búfer deseado en el shell:
man zshzle
o
man readline
Además, puede expandir con pestañas las terminaciones.
make long_target
ls some_path
...
make l<TAB> # prints 'make long_target' without running it
use comodines, expansiones... ni una parte de su caso de uso queda fuera de esta funcionalidad.
Respuesta3
Usando zsh
puedes hacer precisamente eso con Esc+ A. Escriba un comando y luego presione Esc+ Aen lugar de Enter. El comando se ejecutará y el mismo comando estará en el búfer de línea una vez que se complete el comando.
Respuesta4
Parece que necesitas una respuesta muy simple. Como mencionaste Alt+ Tab, supongo que estás usando (X)windows. Resalta el comando con el mouse antes de presionar "Entrar". Se copia automáticamente al portapapeles cuando lo resalta. Para pegarlo, presione el botón central del mouse (rueda de desplazamiento) o escriba Shift+ Insert.