
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 !p
executará 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+R
e digite o comando que deseja encontrar no histórico (começando pelo mais recente que corresponda aos critérios). Bater Ctrl+R
repetidamente 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 history
para 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 zsh
você 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.