Cara mengkonfigurasi Ctrl + w sebagai menghapus kata di zsh

Jawaban:

15

Ini cuplikan dari .zshrc yang saya gunakan:

my-backward-delete-word() {
    local WORDCHARS=${WORDCHARS/\//}
    zle backward-delete-word
}
zle -N my-backward-delete-word
bindkey '^W' my-backward-delete-word

Saya ingat ini adalah sumber aslinya: http://www.zsh.org/mla/users/2001/msg00870.html

Joe
sumber
Terima kasih! Saya memasukkan kode ini ~/.zshrcdan bekerja dengan sempurna!
ironsand
emacsTabel pengikatan kunci default di ZLE mengikat ^ W ke backward-kill-wordbukan ke backward-delete-word, perhatikan.
JdeBP
10

Hanya untuk informasi Anda, saya menemukan solusi ini di sini untuk menjadi jauh lebih elegan. Saya mengutip:

Pilihan lain adalah untuk mengatur WORDCHARS(karakter non-alfanumerik diperlakukan sebagai bagian dari kata) untuk sesuatu yang tidak termasuk /.

Anda juga dapat men-tweak ini jika Anda lebih suka ^wuntuk istirahat di titik, garis bawah, dll. Dalam ~/.zshrcSaya punya:

WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

UPDATE (2 / Mar / 2020)

Seperti @Patryk tunjukkan pada komentar di bawah, ini tidak berhasil ZSH >= 5.7. Ini adalah pembaruan yang saya uji dan kerjakan zsh 5.8 (x86_64-apple-darwin18.7.0).

autoload -U select-word-style
select-word-style bash

export WORDCHARS='.-'
Anastasios Andronidis
sumber
Ini membuat M-dkurang bermanfaat.
Toothrot
1
Ini entah bagaimana tidak berfungsi lagi zsh 5.7 (x86_64-apple-darwin18.2.0).
Patryk
@Patryk Terima kasih telah memperhatikan! Saya memperbarui jawaban saya!
Anastasios Andronidis