uccidere zsh Ctrl + Backspace, Ctrl + Elimina


11

Come configurare zsh in modo tale che Ctrl+ Backspaceuccida la parola prima del punto? Come raggiungerlo Ctrl+ Deleteuccide la parola dopo punto?

Uso urxvt come emulatore di terminale.


In primo luogo, è necessario definire "parola". Sono solo caratteri alfabetici? Tutti i personaggi non spaziali?
Mikel

parola simile a quella usata nella terminologia di emacs
studente

Se nessuna delle soluzioni seguenti funziona, fare riferimento a: stackoverflow.com/questions/21252419/… .
AP.

Risposte:


11

Mi concentrerò su Ctrl+ Deleteprima.

Viene chiamato il comando zsh per eliminare una parola intera in avanti kill-word. Di default è associato a Alt+ D.

Anche come fare Ctrl+ Deletefarlo dipende dall'emulatore di terminale che si sta utilizzando.

Sul mio sistema, funziona con xterm e Gnome Terminal:

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

e per urxvt, dovresti fare:

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

Se non funziona, prova a digitare Ctrl+ V Ctrl+ Deleteper vedere qual è il valore sul tuo sistema.

Potresti anche aggiungere entrambi quelli al tuo .zshrc, o usare l'output tput kDC5invece di codificare hard la sequenza.

Ctrl+ Backspacesembra più difficile.

Sul mio sistema, premere quello equivale a premere solo Backspace.

Se la tua è la stessa, penso che la tua migliore opzione sia usare Alt+ Backspaceo Ctrl+ Winvece.


Uso urxvt come emulatore terminale
studente

Ctrl + Backspacenon funziona
studente

Hai bisogno ^[[3^di urxvt. Ctrl+V Ctrl+Deleteti mostrerei questo.
Mikel

1
Grazie, ho aggiunto bindkey '^[[3^' kill-word bindkeye '^H' backward-kill-wordal mio .zshrc. Ora funziona!
studente

@ user5289: Ah, scusa, ci siamo fraintesi. Non credo ^Ho ^?funzionerà per Ctrl+Backspace. In effetti sembra che un tale vincolo non sia possibile. Alt+Backspaceo Ctrl+Wpotrebbero essere sostituti adeguati.
Mikel

3

Su urxvt, per la parte di cancellazione all'indietro, ho semplicemente nel mio .zshrcquanto segue:

bindkey '^H' backward-kill-word

e mi permette di cancellare la parola precedente con ctrl + backspace


2

Ho questo nel mio .Xresources:

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

e quello nel mio .zshrc:

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

Questo uccide ogni parola separata da spazi bianchi. Nota che '^ [' è il carattere Escape. Devi xrdb -load .Xresources, aprire un terminale e poi premere ^Vseguito da ^BackSpace.


1

Aggiungi quanto segue al tuo ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.