zsh kill Ctrl + Backspace, Ctrl + Excluir

11

Como configurar o zsh de forma que Ctrl+ Backspacemate a palavra antes do ponto? Como conseguir isso Ctrl+ Deletemata a palavra após ponto?

Eu uso o urxvt como emulador de terminal.

aluna
fonte
Em primeiro lugar, você deve definir "palavra". São apenas caracteres alfabéticos? Todos os caracteres não espaciais?
Mikel
palavra como ela é usada na terminologia emacs
estudante de
Se nenhuma das soluções abaixo funcionar, consulte: stackoverflow.com/questions/21252419/… .
AP.

Respostas:

11

Vou me concentrar em Ctrl+ Deleteprimeiro.

O comando zsh para excluir uma palavra inteira para a frente é chamado kill-word. Por padrão, está vinculado a Alt+ D.

O modo de fazer o Ctrl+ Deletedepende também do emulador de terminal que você está usando.

No meu sistema, isso funciona no xterm e no Gnome Terminal:

bindkey -M emacs '^[[3;5~' kill-word

e para urxvt, você deve fazer:

bindkey -M emacs '^[[3^' kill-word

Se isso não funcionar, tente digitar Ctrl+ V Ctrl+ Deletepara ver qual é o valor no seu sistema.

Você pode até adicionar os dois ao seu .zshrc, ou usar a saída em tput kDC5vez de codificar a sequência.

Ctrl+ Backspaceparece mais difícil.

No meu sistema, pressionar isso é o mesmo que pressionar apenas Backspace.

Se o seu for o mesmo, acho que sua melhor opção é usar Alt+ Backspaceou Ctrl+ W.

Mikel
fonte
Eu uso o urxvt como emulador de terminal
student
Ctrl + Backspacenão funciona
estudante
Você precisa ^[[3^do urxvt. Ctrl+V Ctrl+Deletemostraria isso a você.
Mikel
1
Obrigado, eu adicionei o bindkey '^[[3^' kill-word bindkeye '^H' backward-kill-wordao meu .zshrc. Agora funciona!
student
@ user5289: Ah, desculpe, nós nos entendemos mal. Não penso ^Hou ^?vou trabalhar Ctrl+Backspace. De fato, parece que essa ligação não é possível. Alt+Backspaceou Ctrl+Wpodem ser substituições adequadas.
Mikel
3

No urxvt, para a parte de exclusão para trás, eu simplesmente tenho no meu .zshrco seguinte:

bindkey '^H' backward-kill-word

e permite excluir a palavra anterior com ctrl + backspace

benterris
fonte
2

Eu tenho isso no meu .Xresources:

URxvt.keysym.C-BackSpace:       \033[33~

e isso no meu .zshrc:

bindkey -M main -M viins -M vicmd   '^[[33~'    backward-kill-word

Isso mata cada palavra separada por espaço em branco. Observe que '^ [' é o caractere de escape. Você precisa xrdb -load .Xresourcesabrir um terminal e, em seguida, pressionar ^Vseguido de ^BackSpace.

jchnkl
fonte
1

Adicione o seguinte ao seu ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
rysama
fonte