restringindo hist_verify no zsh

2

É possível ignorar hist_verify para comandos de histórico específicos? Por exemplo, raramente tenho a necessidade de verificar !$ ou !! , enquanto considero a verificação um recurso útil para expansões de histórico mais complicadas. Pode selecionar operadores de histórico ser excluídos da verificação de histórico?

    
por user001 02.09.2018 / 00:59

1 resposta

1

Talvez algo como:

accept-line() {
  if [[ ${BUFFER//![\$!]} = *!* ]]; then
    set -o histverify
  else
    set +o histverify
  fi
  zle .$WIDGET
}
zle -N accept-line

adicionado ao seu ~/.zshrc como uma heurística. Ou seja, redefina o widget accept-line (invocado quando você pressiona Enter ) para que defina a opção histverify apenas se houver um ! seguido por um caractere diferente de ! e $ na linha atual.

Isso engana as linhas de comando como echo '!e' !! ou \!!rm , mas parece que deve ser uma limitação aceitável.

Pessoalmente, eu adiciono set +o banghist ao meu ~/.zshrc e prefiro confiar em history-search-backward (ligado em Alt + p por padrão no modo emacs ) ou history-beginning-search-backward (que eu vinculo em PageUp ) que economiza um pouco de digitação e sempre me dá um feedback visual antes de aceitar o comando.

    
por 03.09.2018 / 18:09