Cách định cấu hình Ctrl + w dưới dạng xóa từ trong zsh


12

Tôi muốn xóa một từ bằng Ctrl+ Wtrong zshthích.

vim /foo/bar^W
vim /foo/

Và tìm thấy một giải pháp cho bash, nhưng bindkhông phải là trong chức năng zsh.

Có thể cấu hình ctrl-w (xóa từ) không?

Làm thế nào tôi có thể cấu hình Ctrl+ Wlà một delete-word?


Câu trả lời:


15

Đây là đoạn trích từ .zshrc tôi đã sử dụng:

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

Tôi nhớ đây là nguồn ban đầu: http://www.zsh.org/mla/users/2001/msg00870.html


Cảm ơn! Tôi đặt mã này vào ~/.zshrcvà nó hoạt động hoàn hảo!
ironsand

emacsBảng ràng buộc khóa mặc định trong ZLE liên kết ^ W backward-kill-wordthay vì backward-delete-word, ghi chú.
JdeBP

10

Chỉ cần thông tin của bạn, tôi thấy giải pháp này ở đây thanh lịch hơn nhiều. Tôi trích dẫn:

Một tùy chọn khác là đặt WORDCHARS(các ký tự không chữ và số được coi là một phần của từ) thành một từ không bao gồm /.

Bạn cũng có thể điều chỉnh điều này nếu bạn muốn ^wngắt ở dấu chấm, gạch dưới, v.v. Trong ~/.zshrcTôi có:

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

CẬP NHẬT (2 tháng 3 năm 2020)

Như @Patryk đã chỉ ra các ý kiến ​​dưới đây, điều này không hiệu quả ZSH >= 5.7. Đây là một bản cập nhật mà tôi đã thử nghiệm và làm việc trên zsh 5.8 (x86_64-apple-darwin18.7.0).

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

export WORDCHARS='.-'

Điều này làm cho M-dít hữu ích hơn.
Tẩy răng

1
Điều này bằng cách nào đó không làm việc nữa với zsh 5.7 (x86_64-apple-darwin18.2.0).
Patryk

@Patryk Cảm ơn bạn đã chú ý! Tôi đã cập nhật câu trả lời của tôi!
Anastasios Andronidis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.