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.


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.


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


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.


1

Tambahkan berikut ini ke ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.