Existe um comando para mudar para o modo vicmd em zsh?

4

Eu mapeei alt - k e alt - j para o histórico de navegação, mas eu gostaria de alternar automaticamente sempre que eu chamar uma entrada de histórico, porque na maioria das vezes eu preciso mover o cursor para uma determinada posição e fazer algumas alterações.

Aqui estão minhas configurações atuais em .zshrc, o que devo fazer para alcançar a meta mencionada acima?

    bindkey '^[k' up-line-or-history
    bindkey '^[j' down-line-or-history
    
por qed 01.02.2013 / 14:27

1 resposta

4

O que você quer pode ser feito pressionando-se Esc após ou Alt + j ou Alt + < kbd> k mas se você quiser salvar esse 1 pressionamento de tecla, adicionar o seguinte ao seu .zshrc pode ajudá-lo.

vi-cmd-up-line-history() { 
  zle vi-cmd-mode
  zle up-line-or-history 
} 
zle -N vi-cmd-up-line-history 
bindkey -M vicmd '^[k' vi-cmd-up-line-history
bindkey -M viins '^[k' vi-cmd-up-line-history

vi-cmd-down-line-history() { 
  zle vi-cmd-mode
  zle down-line-or-history 
} 
zle -N vi-cmd-down-line-history
bindkey -M vicmd '^[j' vi-cmd-down-line-history
bindkey -M viins '^[j' vi-cmd-down-line-history

O que ele faz é ligar novos widgets chamados vi-cmd-down-line-history e vi-cmd-up-line-history a Alt + j e Alt + k . Esses widgets alteram o modo para cmd chamando o widget vi-cmd-mode e, em seguida, acionam os down-line-or-history e up-line-or-history respectivamente.

    
por 01.02.2013 / 18:42