Como posso apagar uma barra ou uma palavra no zsh?

5

Comportamento bash

Acabei de migrar de bash para zsh . Em bash , eu tinha a seguinte linha em ~/.inputrc .

"\e\C-?": unix-filename-rubout

Portanto, Alt + Backspace seria deletado de volta para a barra anterior, o que era útil para mudar os caminhos inseridos.

Além disso, bash usa como padrão Ctrl + w excluir o espaço anterior, o que é útil para excluir argumentos inteiros (presumindo que eles não possuam espaços ).

Comportamento do Zsh

Em zsh , tanto Alt + Backspace e Ctrl + w fazem a mesma coisa. Ambos excluem a palavra anterior, mas são muito liberais com o que constitui uma quebra de palavra, excluindo até a% anterior- ou _ . Existe uma maneira de fazer com que zsh se comporte de maneira semelhante a bash ? Se é importante, tenho oh-my-zsh instalado.

    
por Sparhawk 30.01.2016 / 02:04

3 respostas

8

Editar: o próximo resultado do Google depois da sua pergunta foi este com a mesma solução: zsh: faz o ALT + BACKSPACE parar em caracteres não alfanuméricos

Esta resposta foi fornecida por /nick FoH de #zsh no freenode.

backward-kill-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-kill-word
}
zle -N backward-kill-dir
bindkey '^[^?' backward-kill-dir

Dessa forma, você pode usar ctrl+w para excluir um Word (no jargão do vim) e alt+bkspc para excluir uma palavra

    
por 30.10.2016 / 10:09
10

Uma pergunta semelhante foi feita aqui: zsh: pare de retroceder-matar -word no delimitador de diretório

e uma solução viável: adicione essas configurações ao seu zshrc:

autoload -U select-word-style
select-word-style bash
    
por 30.01.2016 / 02:33
1

Expandindo a a resposta do JunkMechanic , eu queria que

  • atalhos zsh existentes ( Ctrl W , Ctrl e Ctrl < kbd> → ) funciona como nos padrões zsh
  • Atalhos baseados em Alt ( Alt W , Alt e Alt ) funcionam de forma semelhante, mas "mais granular", eg até o mais próximo /

Aqui está o que eu uso agora:

# Alt+Backspace
backward-kill-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-kill-word
}
zle -N backward-kill-dir
bindkey '^[^?' backward-kill-dir


# Alt+Left
backward-word-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle backward-word
}
zle -N backward-word-dir
bindkey "^[[1;3C" forward-word-dir

# Alt+Right
forward-word-dir () {
    local WORDCHARS=${WORDCHARS/\/}
    zle forward-word
}
zle -N forward-word-dir
bindkey "^[[1;3D" backward-word-dir
    
por 29.01.2018 / 15:03

Tags