Coloque um comando no histórico sem executá-lo

7

Em bash , se eu tiver um comando na linha, e Eu pressiono Alt - # (com o cursor em qualquer lugar na linha), ele adiciona um # na frente da linha, comentando, 'executa' (que não faz nada, uma vez que agora é comentado), e coloca na história. É realmente útil para quando eu digito algum ou todo um comando e percebo que preciso executar outro comando primeiro e voltar a ele mais tarde.

Como posso fazer a mesma operação em zsh ? O comentário não é importante: tudo o que me interessa é que o comando não aconteça agora, mas pode ser recuperado da história mais tarde.

    
por Dan Hulme 06.03.2013 / 16:23

3 respostas

5

Três opções:

  • O zsh tem o atalho de teclado Alt + Q por padrão que envia a linha atual.

    Use assim:

    1. Digite o comando .

    2. Pressione Alt + Q .

    3. Execute othercommand .

    4. comando reaparecerá.

    Tecnicamente, isso não é colocado no histórico. Além disso, se você precisar executar outro comando antes do comando , você deve pressionar Alt + Q novamente.

  • Também por padrão, os atalhos de teclado Ctrl + U e Ctrl + Y são cortados e puxados (colar ) a linha atual.

    Use-os da seguinte forma:

    1. Digite o comando .

    2. Pressione Ctrl + U .

    3. Execute othercommand .

    4. Pressione Ctrl + Y .

    5. comando reaparecerá.

    Isso também funciona no bash e usa sua própria área de transferência, ou seja, o conteúdo da área de transferência gerenciada por Ctrl + ( Shift +) C / V e seleção / clique do meio permanecerão inalterados.

  • Por último, mas não menos importante, você pode ativar permanentemente os comentários na linha de comando executando

    echo setopt interactivecomments >> ~/.zshrc
    

    Alt + # não funciona aqui, mas Ctrl + A / Início , # , Enter atinge o mesmo resultado.

Para ver todos os atalhos de teclado disponíveis, execute

bindkey
    
por 06.03.2013 / 17:19
7

Opção quatro (como resposta ao título da pergunta, não sua explicação; -):

  • print -S "this line goes to the history"

Trecho de zshbuiltins(1) : " print -S Coloque os resultados na lista do histórico em vez de na saída padrão. Nesse caso, apenas um único argumento é                      permitido; será dividido em palavras como se fosse uma linha de comando completa. O efeito é semelhante à leitura                      a linha de um arquivo de histórico com a opção HIST_LEX_WORDS ativa. "

    
por 06.03.2013 / 19:26
3

Um widgetification da resposta de @ mpy, adicione isto ao seu .zshrc

to-history() { print -S $BUFFER ; BUFFER= }
zle -N to-history
bindkey 'œ' to-history

Nota: œ é o que eu recebo em um Mac para alt / option-q, ajuste para o seu terminal

    
por 11.03.2016 / 23:24

Tags