zsh giết Ctrl + Backspace, Ctrl + Xóa


11

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.


Đầu tiên, bạn nên định nghĩa "từ". Có phải nó chỉ là ký tự chữ cái? Tất cả các nhân vật không phải không gian?
Mikel

từ giống như nó được sử dụng trong thuật ngữ emacs
sinh viên

Nếu không có giải pháp nào dưới đây hoạt động, hãy tham khảo: stackoverflow.com/questions/21252419/ .
AP.

Câu trả lời:


11

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 .zshrchoặc sử dụng đầu ra tput kDC5thay 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ế.


Tôi sử dụng urxvt làm trình giả lập thiết bị đầu cuối
sinh viên

Ctrl + Backspacekhông hoạt động
sinh viên

Bạn cần ^[[3^cho urxvt. Ctrl+V Ctrl+Deletesẽ cho bạn thấy điều này.
Mikel

1
Cảm ơn, tôi đã thêm bindkey '^[[3^' kill-word bindkey'^H' backward-kill-wordvào .zshrc của tôi. Bây giờ nó hoạt động!
sinh viên

@ user5289: À, xin lỗi, chúng tôi hiểu lầm nhau. Tôi không nghĩ ^Hhoặ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+Backspacehoặc Ctrl+Wcó thể là sự thay thế đầy đủ.
Mikel

3

Trên urxvt, đối với phần xóa ngược, tôi chỉ cần có .zshrcphần sau:

bindkey '^H' backward-kill-word

và nó cho phép tôi xóa từ trước đó bằng ctrl + backspace


2

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 ^Vtheo sau ^BackSpace.

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.