Bắt <ctrl> + <backspace> để xóa các từ trong chế độ chèn gnome-terminal và vim


10

Có vẻ như ctrl+ Wxóa ngược một từ một lần. Điều đó thật tuyệt, nhưng tôi thực sự rất thích cách này hoạt động với ctrl+ backspacenhư hầu hết các ứng dụng khác.

Cách tốt nhất để làm điều này là gì? Tôi cần thay đổi để ảnh hưởng đến các lệnh gnome-terminal, dòng lệnh vim và GUI vim.


1
Trong vim bạn có thể nhấn D sau đó, B và nó sẽ làm điều tương tự. Tuy nhiên, tôi cũng rất nhớ tính năng này trong thiết bị đầu cuối vì bạn phải thoát ra ngoài và nó không hoạt động khi hoạt động ở chế độ Chèn. Mẹo tuyệt vời cho CTRL + W.
mchid

Câu trả lời:


7

Lưu ý rằng điều này sẽ hoạt động trong thiết bị đầu cuối và chế độ emacs mặc định (mà bạn đang sử dụng if Ctrl+ Wxóa từ trước đó cho bạn). Nó sẽ không hoạt động trong chế độ vi của bash và sẽ không ảnh hưởng đến chính vi / vim. Do đó, đây chỉ là một câu trả lời một phần nhưng tốt nhất người dùng emacs này có thể cung cấp.


Loại điều này được quản lý bởi readlinethư viện có hành vi có thể được kiểm soát thông qua ~/.inputrc. Chỉnh sửa (hoặc tạo, nếu nó không tồn tại) ~/.inputrcvà thêm dòng này:

"\C-H":"\C-W"

Bây giờ, mở một thiết bị đầu cuối mới và nó sẽ hoạt động.

Giải trình

Thực \C-Htế là Control+ BackSpace. Bạn có thể thấy mã khóa bằng cách nhấn Ctrl+ Vsau đó, phím bạn đang theo sau. Bạn sẽ thấy BackSpacelợi nhuận đó ^H.

Bây giờ, nó nên có thể để ràng buộc Control+ BackSpacevới chức năng bash mà xóa từ trước đó ( backward-kill-wordhoặc unix-word-rubout) bằng cách sử dụng "\C-H": backward-kill-word. Tuy nhiên, tôi không thể làm việc đó được. Nó hoạt động hoàn toàn tốt với các khóa khác nhau ( "\C-E": backward-kill-wordví dụ: làm cho Ctrl+ Exóa từ trước đó) nhưng vì một số lý do, tôi không thể làm cho nó hoạt động được BackSpace.

Vì vậy, như một cách giải quyết, chúng tôi chỉ ánh xạ Ctrl+ Backspaceđến Ctrl+ Wđã được ánh xạ tới backward-kill-word. Vì vậy, khi bạn nhấn Ctrl+ Backspace, nó sẽ được dịch thành Ctrl+ Wmà lần lượt sẽ gửi backward-kill-word. Tôi có ý tưởng cho cách giải quyết này từ bài SU này .


4

Cho đến gần đây, gnome-terminal đã phát ra cùng một mã trên BackspaceCtrl+ Backspace, do đó bạn không thể phân biệt hai mã trong ứng dụng của mình.

Điều này đã được sửa trong vte-0.42, một phần của Gnome 3.18 được phát hành vào mùa thu này.

Nếu bạn đang sử dụng Wily, bạn có thể tìm thấy các gói cập nhật trong Giai đoạn Gnome3 .


Tôi có thể có được điều này để chạy một cách đáng tin cậy mà không cần thêm PPA lớn đó không?
Ciprian Tomoiagă

Không phải không tải xuống, vá, biên dịch và cài đặt gói libvte 2.90 phù hợp với sự tin cậy. Bản vá có tại bugzilla.gnome.org/show_orms.cgi?id=733246 .
egmont

3

Sử dụng Alt+ Backspacethay thế: nó hoạt động giống như Ctrl+ Backspacevà không yêu cầu bất kỳ cấu hình nào.


1

Nó hoạt động trên máy của tôi. Chỉ cần đảm bảo rằng bạn sử dụng tmux từ master và nvim từ linuxbrew và control + backspace cũng hoạt động trong bash và vim!

(Nhận bash từ linuxbrew quá)

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.