zsh tcsh - como a navegação de histórico

3

Em tcsh , os comandos \eP e \eN levam em consideração o prefixo normalizado de espaço em branco da linha atual, não apenas a primeira palavra.

Por exemplo, se meu histórico contiver

git pull upstream feature-dancing-pigs
git clone

e eu digito

% git pull

e, em seguida, pressione \eP em tcsh , recebo

% git pull upstream feature-dancing-pigs

se eu atingir \eP em zsh , recebo um item de histórico que corresponde apenas ao comando

% git clone

Desejo configurar o zsh para emular o comportamento tcsh . É possível?

Eu tentei zsh com a configuração de chave padrão do emacs e com um explícito

bindkey "\eP" history-search-backward

Como acontece

bindkey "\eP" history-beginning-search-backward

tem o comportamento esperado Eu estava usando ^[ inicialmente no lugar de \e .

    
por Gregory Nisbet 20.05.2016 / 03:15

1 resposta

4

Existe uma função documentada em zshcontrib chamada up-line-or-beginning-search , você pode ver isso executando.

man zshcontrib | less '+/^\s*up-line-or-beginning-search'

These widgets are similar to the builtin functions up-line-or-search and down-line-or-search: if in a multiline buffer they move up or down within the buffer, otherwise they search for a history line matching the start of the current line. In this case, however, they search for a line which matches the current line up to the current cursor position, in the manner of history-begin‐ ning-search-backward and -forward, rather than the first word on the line.

se você observar as instruções fornecidas na parte superior da seção ZLE FUNCTIONS em man zshcontrib

ZLE FUNCTIONS
Widgets
These functions all implement user-defined ZLE widgets (see zshzle(1)) which can be bound to keystrokes in interactive shells. To use them, your .zshrc should contain lines of the form
autoload function
zle -N function

Pessoalmente, eu segui as instruções acima, mas suspeito que hoje em dia você pode não precisar ... no seu ~/.zshrc

# register the function with the autoloader
autoload -U up-line-or-beginning-search
# define new zle widget
zle -N up-line-or-beginning-search
# bind UP key
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-beginning-search
    
por 20.05.2016 / 04:32