Imprimindo todas as variáveis começando com foo no zsh

1

No bash:

foo_a=1
foo_b=2
declare -p ${!foo_*}

Saídas:

declare -- foo_a="1"
declare -- foo_b="2"

Como faço isso em zsh ?

Por que não é possível colar o acima em zsh para sequer definir as variáveis? Parece que se colar um pedaço de código não tem efeito algum a menos que todo o código colado suceda? O que há com isso?

    
por PSkocik 17.06.2016 / 11:49

1 resposta

2
  1. Como imprimir todos os parâmetros começando com foo :

    declare -p ${(Mk)parameters:#foo*}
    

    Todas as variáveis são armazenadas na matriz parameters associativa, portanto, é suficiente imprimir todas as suas chaves (k) e pesquisar o padrão foo* . O sinalizador (M) está presente para remover elementos não correspondentes.

    Saída:

    typeset foo_a=1
    typeset foo_b=2
    

    (observe que declare é o mesmo que typeset ).

  1. A colagem não funciona como esperado devido ao recurso recentemente introduzido chamado bracketed_paste :

    zle_bracketed_paste

    Many terminal emulators have a feature that allows applications to identify when text is pasted into the terminal rather than being typed normally. For ZLE, this means that special characters such as tabs and newlines can be inserted instead of invoking editor commands. Furthermore, pasted text forms a single undo event and if the region is active, pasted text will replace the region.

    This two-element array contains the terminal escape sequences for enabling and disabling the feature. These escape sequences are used to enable bracketed paste when ZLE is active and disable it at other times. Unsetting the parameter has the effect of ensuring that bracketed paste remains disabled.

    Apenas desmarque se você não gostar:

    unset zle_bracketed_paste
    
por 17.06.2016 / 12:48

Tags