Làm cách nào để định cấu hình zsh sao cho Ctrl+ Backspacegiết từ trước điểm? Làm thế nào để đạt được điều đó Ctrl+ Deletegiết chết từ sau điểm?
Tôi sử dụng urxvt như trình giả lập thiết bị đầu cuối.
Làm cách nào để định cấu hình zsh sao cho Ctrl+ Backspacegiết từ trước điểm? Làm thế nào để đạt được điều đó Ctrl+ Deletegiết chết từ sau điểm?
Tôi sử dụng urxvt như trình giả lập thiết bị đầu cuối.
Câu trả lời:
Tôi sẽ tập trung vào Ctrl+ Deleteđầu tiên.
Lệnh zsh để xóa toàn bộ từ chuyển tiếp được gọi kill-word
. Theo mặc định, nó bị ràng buộc với Alt+ D.
Cách thực hiện Ctrl+ Deletelàm điều đó cũng phụ thuộc vào trình giả lập thiết bị đầu cuối mà bạn đang sử dụng.
Trên hệ thống của tôi, điều này hoạt động trong xterm và Gnome Terminal:
bindkey -M emacs '^[[3;5~' kill-word
và đối với urxvt, bạn nên làm:
bindkey -M emacs '^[[3^' kill-word
Nếu điều đó không hiệu quả, hãy thử gõ Ctrl+ V Ctrl+ Deleteđể xem giá trị trên hệ thống của bạn là gì.
Bạn thậm chí có thể thêm cả hai thứ đó lại với nhau .zshrc
hoặc sử dụng đầu ra tput kDC5
thay vì mã hóa trình tự cứng.
Ctrl+ Backspacecó vẻ khó hơn.
Trên hệ thống của tôi, nhấn đó cũng giống như nhấn chỉ Backspace.
Nếu bạn giống nhau, tôi nghĩ lựa chọn tốt nhất của bạn là sử dụng Alt+ Backspacehoặc Ctrl+ Wthay thế.
Ctrl + Backspace
không hoạt động
^[[3^
cho urxvt. Ctrl+V
Ctrl+Delete
sẽ cho bạn thấy điều này.
'^[[3^' kill-word bindkey
và '^H' backward-kill-word
vào .zshrc của tôi. Bây giờ nó hoạt động!
^H
hoặc ^?
sẽ làm việc cho Ctrl+Backspace
. Trong thực tế có vẻ như một ràng buộc như vậy là không thể. Alt+Backspace
hoặc Ctrl+W
có thể là sự thay thế đầy đủ.
Tôi đã có cái này trong .Xresources
:
URxvt.keysym.C-BackSpace: \033[33~
và rằng trong tôi .zshrc
:
bindkey -M main -M viins -M vicmd '^[[33~' backward-kill-word
Điều này giết chết từng khoảng trắng tách biệt từ. Lưu ý rằng '^ [' là ký tự Escape. Bạn phải xrdb -load .Xresources
, mở một thiết bị đầu cuối và sau đó nhấn ^V
theo sau ^BackSpace
.