zsh bunuh Ctrl + Backspace, Ctrl + Delete

11

Bagaimana mengkonfigurasi zsh sehingga Ctrl+ Backspacemembunuh kata sebelum point? Bagaimana cara mencapainya Ctrl+ Deletemembunuh kata demi kata?

Saya menggunakan urxvt sebagai terminal emulator.

siswa
sumber
Pertama, Anda harus mendefinisikan "kata". Apakah hanya karakter alfabet? Semua karakter bukan spasi?
Mikel
kata seperti itu digunakan dalam terminologi emacs
siswa
Jika tidak ada solusi di bawah ini yang berfungsi, lihat: stackoverflow.com/questions/21252419/… .
AP.

Jawaban:

11

Saya akan fokus pada Ctrl+ Deletepertama.

Perintah zsh untuk menghapus seluruh kata ke depan disebut kill-word. Secara default itu terikat ke Alt+ D.

Cara membuat Ctrl+ Deletemelakukannya juga tergantung pada terminal emulator yang Anda gunakan.

Di sistem saya, ini berfungsi di xterm dan Gnome Terminal:

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

dan untuk urxvt, Anda harus melakukan:

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

Jika tidak berhasil, coba ketikkan Ctrl+ V Ctrl+ Deleteuntuk melihat nilainya di sistem Anda.

Anda bahkan bisa menambahkan keduanya bersama-sama ke Anda .zshrc, atau menggunakan output tput kDC5alih-alih mengkodekan urutannya.

Ctrl+ Backspacetampaknya lebih sulit.

Di sistem saya, menekan itu sama dengan menekan just Backspace.

Jika milik Anda sama, saya pikir pilihan terbaik Anda adalah menggunakan Alt+ Backspaceatau Ctrl+ Wsebagai gantinya.

Mikel
sumber
Saya menggunakan urxvt sebagai terminal emulator
siswa
Ctrl + Backspacetidak bekerja
siswa
Anda membutuhkan ^[[3^urxvt. Ctrl+V Ctrl+Deleteakan menunjukkan ini padamu.
Mikel
1
Terima kasih, saya telah menambahkan bindkey '^[[3^' kill-word bindkeydan '^H' backward-kill-wordke .zshrc saya. Sekarang berhasil!
siswa
@ user5289: Ah, maaf, kami salah mengerti satu sama lain. Saya tidak berpikir ^Hatau ^?akan bekerja untuk Ctrl+Backspace. Sebenarnya ikatan seperti itu tidak mungkin. Alt+Backspaceatau Ctrl+Wmungkin pengganti yang memadai.
Mikel
3

Pada urxvt, untuk menghapus bagian belakang, saya hanya memiliki di .zshrcbagian berikut:

bindkey '^H' backward-kill-word

dan itu memungkinkan saya untuk menghapus kata sebelumnya dengan ctrl + backspace

benterris
sumber
2

Saya punya ini di .Xresources:

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

dan itu di saya .zshrc:

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

Ini membunuh setiap kata terpisah spasi putih. Perhatikan bahwa '^ [' adalah karakter Escape. Anda harus xrdb -load .Xresources, buka terminal dan kemudian tekan ^Vdiikuti oleh ^BackSpace.

jchnkl
sumber
1

Tambahkan berikut ini ke ~/.zshrc

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