zsh modo vi: navegue pelos comandos recentes que começam com

1

Eu recentemente mudei para o modo vi no meu zsh e há um recurso do modo emacs que não consigo encontrar como fazer no modo vi. O recurso é o histórico de navegação por linhas iniciadas por algo que eu já digitei. Por exemplo, se eu digitar vi e pressionar ou , eu navegarei pelos meus comandos recentes, começando com vi . É possível mesmo com o modo vi?

    
por Mikołaj Biel 08.06.2016 / 16:48

1 resposta

2

emacs-mode e vi-mode são apenas diferentes presets de ligações de teclas. Qualquer widget pode ser ligado em qualquer modo.

Os widgets em questão aqui são history-beginning-search-backward (presumivelmente para ) e history-beginning-search-forward (para ).

Para ligá-los às teclas para cima e para baixo no modo vicmd , você só precisa executar

bindkey '^[[A' history-beginning-search-backward
bindkey '^[[B' history-beginning-search-forward
  • Nota 1: Isso substitui a configuração padrão para essas chaves.
  • Nota 2: ^[[A e ^[[B podem não ser os códigos corretos para o seu terminal.

    • ou Encontre os corretos pressionando Ctrl + v seguido pela chave em questão.
    • ou use a matriz associativa terminfo para recuperar a ligação correta (graças a Stéphane Chazelas por seu comentário sobre isso):

      bindkey "$terminfo[kcuu1]" history-beginning-search-backward
      bindkey "$terminfo[kcud1]" history-beginning-search-backward
      

      kcuu1 e kcud1 são os nomes de capacidade para e , respectivamente. Você pode obter uma lista de possíveis recursos e seus nomes na terminfo(5) manpage ( man 5 terminfo ). O array associativo terminfo usa os nomes da coluna "Cap-name" como chaves.

por 08.06.2016 / 18:11

Tags