(1) Por alguma razão, bindkey comporta-se estranhamente quando se trata de "/": <esc>
seguido rapidamente por /
é interpretado como <esc-/>
. (Eu observei esse comportamento no outro dia; não tenho certeza do que o causa.) Eu não sei se isso é um bug ou um recurso, e se é um recurso se ele pode ser desabilitado, mas você pode contorná-lo facilmente .
Esta combinação de teclas provavelmente está vinculada a _history-complete-older
, que está gerando o resultado indesejado - você pode usar bindkey -L
para ver se este é o caso.
De qualquer forma, se você não se importa em sacrificar a ligação real <esc-/>
(pressionada junto, como um acorde), você pode vinculá-la novamente ao comando de busca do histórico do modo vi , de modo que digitar <esc>
seguido por /
faça a mesma coisa em qualquer velocidade de digitação. =)
Como isso será tratado como um acorde, ele não terá o efeito de inserir primeiro o modo de comando do vi, então teremos que garantir que isso aconteça primeiro. Primeiro, você precisa definir uma função; coloque em algum lugar no seu fpath
se você usar isso, ou coloque-o no seu .zshrc caso contrário:
vi-search-fix() {
zle vi-cmd-mode
zle .vi-history-search-backward
}
O resto vai no seu .zshrc de qualquer forma:
autoload vi-search-fix
zle -N vi-search-fix
bindkey -M viins '\e/' vi-search-fix
Deve ser bom para ir.
(2) Você pode corrigir a tecla de retrocesso da seguinte maneira:
'bindkey "^?" backward-delete-char'
Além disso, se você quiser um comportamento semelhante para outros comandos do estilo vi:
bindkey "^W" backward-kill-word
bindkey "^H" backward-delete-char # Control-h also deletes the previous char
bindkey "^U" backward-kill-line