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.