Terminal com botão "repetir último"

Terminal com botão "repetir último"

Muitas vezes estou compilando coisas e, portanto, repetindo o mesmo comando indefinidamente, então gostaria de me beneficiar da minha "memória visual" e ter uma espécie de botão "repetir o último comando" anexado a um terminal. Mais precisamente, aqui está como eu vejo:

  • Meu terminal "especial" seria como um emulador de terminal padrão, com uma linha de entrada extra na parte inferior, que teria um botão "executar" anexado a ele. Clicar no botão executaria o comandosemapagando-o.
  • Talvez até mesmo um número arbitrário desses comandos possa ser empilhado (já que muitas vezes preciso alternar entre 2 ou 3 comandos).

Eu sei que posso usar apenas Entero teclado para refazer o último comando, mas o que muitas vezes acontece é que eu esqueço que só tive que digitar outro comando (para consertar alguma coisa, ou o que quer que seja) então não trará o comando certo do histórico. Então, em vez de um reflexo, tenho que ler (pelo menos folhear) o comando antes de pressionar Enter.

Existe tal engenhoca em algum lugar? Costumo usar vários terminais precisamente para garantir que cada um sempre tenha o comando "certo" por último, mas minhas habilidades Alt+ Tabgeralmente me fazem ir para a janela errada. E preciso de informações do terminal, como ambiente e cwd, então não posso simplesmente tentar "integrá-las" em meu editor de código. Quer dizer, usar Alt+ F2e then Enternão funcionaria (já que também preciso ler a saída do terminal). Eu só quero poder usar o melhor do teclado e da memória visual (por meio de cliques) ao mesmo tempo.

Responder1

Acho que a expansão da história pode ser muito útil aqui. Por exemplo, digitar !pexecutará o último comando começando com 'p'. Da mesma forma !vi, executará o último comando começando com 'vi' e assim por diante. Mais informaçõesaqui. Se você não tiver certeza de qual deles foi o último, você pode definir a opção shell histverify( shopt -s histverify), para que ainda possa editar (ou inspecionar) o comando antes de executá-lo. Mais sobre issoaqui.

Alternativamente, você pode usar a funcionalidade de pesquisa de histórico. No bash, pressione Ctrl+Re digite o comando que deseja encontrar no histórico (começando pelo mais recente que corresponda aos critérios). Bater Ctrl+Rrepetidamente trará de volta comandos mais antigos que correspondem aos seus critérios. Mais informaçõesaquieaqui

Se desejar, você pode modificar o inputrc do seu readline, de modo que as setas para cima/para baixo façam a pesquisa do histórico para você. Mais informaçõesaquieaqui.

Responder2

Dê uma olhada na funcionalidade de histórico do seu shell. No meu zsh:

!!

repete o último comando.

Digite historypara dar uma olhada nas últimas entradas.

Para obter o buffer desejado no shell:

man zshzle

ou

man readline

Além disso, você pode expandir as conclusões

make long_target
ls some_path
...
make l<TAB> # prints 'make long_target' without running it

use curingas, expansões... nem um pouco do seu caso de uso está fora dessa funcionalidade.

Responder3

Usando zshvocê pode fazer exatamente isso com Esc+ A. Digite um comando e pressione Esc+ Aem vez de Enter. O comando será executado e o mesmo comando estará no buffer de linha após a conclusão do comando.

Responder4

Parece que você precisa de uma resposta muito simples. Já que você mencionou Alt+ Tab, presumo que você esteja usando (X)windows. Você destaca o comando com o mouse antes de pressionar “Enter”. Ele é copiado automaticamente para a área de transferência quando você o destaca. Para colá-lo, pressione o botão do meio do mouse (roda de rolagem) ou digite Shift+ Insert.

informação relacionada