Em tcsh
, os comandos \eP
e \eN
levam em consideração o prefixo normalizado por espaços 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 então acertei \eP
, tcsh
eu recebo
% git pull upstream feature-dancing-pigs
se eu acertar \eP
, zsh
recebo um item do histórico que corresponde apenas ao comando
% git clone
Quero configurar zsh
para emular o tcsh
comportamento. É possível?
Eu tentei zsh
com a configuração de chave padrão do emacs e com uma configuração explícita
bindkey "\eP" history-search-backward
Acontece que
bindkey "\eP" history-beginning-search-backward
tem o comportamento esperado que eu estava usando ^[
inicialmente no lugar de \e
.
Responder1
Há 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'
Esses widgets são semelhantes às funções integradas up-line-or-search e down-line-or-search: se estiverem em um buffer multilinha, eles se movem para cima ou para baixo dentro do buffer, caso contrário, eles procuram uma linha de histórico que corresponda ao início do buffer. linha atual. Neste caso, porém, eles procuram uma linha quecorresponde à linha atual até a posição atual do cursor, na forma de história-começando-pesquisa-para trás e para frente,em vez da primeira palavra na linha.
se você olhar as instruções fornecidas no topo da ZLE FUNCTIONS
seção emman zshcontrib
Widgets de FUNÇÕES ZLE
Todas essas funções implementam widgets ZLE definidos pelo usuário (veja zshzle(1)) que podem ser vinculados a pressionamentos de teclas em shells interativos. Para usá-los, seu .zshrc deve conter linhas no formato
autoload function
zle -N function
Pessoalmente, segui as instruções acima, mas suspeito que hoje em dia você não precise...~/.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