Ánh xạ Gnome-terminal + Vim và Ctrl-Shift


11

Có thể ánh xạ trình tự với Ctrl- Shifttrong Gnome Terminal không?

Tôi đang cố gắng thêm ánh xạ

  • map <C-S-[> gT
  • map <C-S-]> gt

và nó không hoạt động. Làm thế nào để làm điều đó?

Bằng cách nào đó tôi đã lập bản đồ <C-S-]>, nhưng hóa ra không phải vậy <C-S-]>, nhưng <C-]>, có vẻ như nó không nhận ra Shift trong chuỗi này. Đó là cấu hình sai hoặc đó là lỗi của gnome-terminal?

Ngoài ra. Ánh xạ <C-[>, sau khi nhấn, có vẻ như vim đang chờ. Tôi cho rằng đó là thời gian chờ lập bản đồ, nhưng làm thế nào để thoát khỏi thời gian chờ này khi tôi nhấn chính xác <C-[>và tôi không muốn nhấn bất cứ điều gì khác?

Tôi mới bắt đầu học vim, rất xin lỗi nếu có gì đó rõ ràng là sai trong ánh xạ đó.

Câu trả lời:


8

Tôi nghĩ vấn đề ở đây là bạn đang cố lấy vim, dự kiến ​​sẽ chạy trong một thiết bị đầu cuối, để nhận ra chuỗi CTRL-SHIFT. Mặc dù X có thể nhận ra các kết hợp như vậy, nhưng các ứng dụng chạy trong thiết bị đầu cuối (hoặc, ngày nay, trình giả lập thiết bị đầu cuối) không thể. Điều này là do, về mặt lịch sử, các thiết bị đầu cuối chỉ có thể gửi và nhận các chuỗi dữ liệu ASCII bảy hoặc tám bit qua một kết nối nối tiếp (mặc dù điều này có thể bao gồm "các chuỗi thoát" định vị con trỏ, cuộn hoặc xóa các dòng, thay đổi màu sắc và hữu ích khác Các hiệu ứng).

Có 32 "Mã điều khiển" trong bộ ký tự ASCII, bao gồm CTRL-A quen thuộc đến CTRL-Z. Nhưng không có mã ASCII tương ứng cho "CTRL-SHIFT" A đến Z. Bây giờ, gnome-terminal có thể nhận ra các mã này (ví dụ: CTRL-SHIFT-V sẽ dán văn bản từ bảng tạm), nhưng vim sẽ không có thể có quyền truy cập trực tiếp vào nó.

Tất nhiên, có thể (tôi không biết) có thể thiết lập trình giả lập thiết bị đầu cuối để chuyển đổi phím CTRL-SHIFT sang một chuỗi thoát mà sau đó có thể được nhận dạng bằng ánh xạ vim.

=======

CẬP NHẬT

Bạn có thể quan tâm đến gvim, đây là phiên bản đồ họa của vim chạy dưới dạng chương trình X thay vì chương trình đầu cuối. Có lẽ gvim sẽ có thể hiểu mã CTRL-SHIFT?


4

Có vẻ như là một vấn đề với Gnome Terminal không cho phép một số kết hợp nhất định với Ctrlkhóa. Tìm kiếm trực tuyến cho thấy rất nhiều trường hợp này.

Chỉ trong trường hợp bạn không biết, Ctrl+ page up/ page downchu kỳ thông qua các tab.


3

Như Bartleby đã chỉ ra đây là một hạn chế cuối cùng, bởi vì vi thấy các mã khóa là như nhau.

Đối với các thiết bị đầu cuối như xtermbạn có thể thay đổi điều đó. Để gnome-terminal bỏ qua các cài đặt tài nguyên X, tôi không biết cách thực hiện như sau:

Đây câu hỏi SO bao gồm các chủ đề tương tự, và ví dụ này chương trình này được sử dụng để lập bản đồ nhiều phím trong .Xresourcestập tin. Ví dụ:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Bây giờ chúng ta có chuỗi chìa khóa khác nhau đi vào vi cho Ctrlavs CtrlShifta, Ctrlbvs CtrlShiftb, Ctrlfvs CtrlShiftf.

Bây giờ chúng ta có thể ánh xạ chúng khác nhau trong ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>

Câu hỏi ban đầu là về gnome-terminal, trong khi câu trả lời của bạn đề cập đến xterm.
egmont

@egmont: Điểm tốt, và sự giám sát về phía tôi. Theo câu trả lời này.Xresourcesđược bỏ qua bởi gnome-terminal. Đó là điều không may. Cập nhật câu trả lời.
cfi

Hơi được sắp xếp lại / gạch chéo câu trả lời này dưới dạng cặp Hỏi & Đáp cho SuperUser , vì tôi có lẽ nên xóa nó ở đây vì nó không áp dụng cho thiết bị đầu cuối của người hỏi.
cfi

1

Có vẻ như bạn chỉ cần tắt tất cả các phím tắt trong gnome-terminal.


2
Tại sao vô hiệu hóa các phím tắt giúp?
Eliah Kagan

Nó dường như không giúp được gì cả, từ kinh nghiệm của tôi.
Elliot Foster

1

Trong gnome-terminalcác chuỗi thoát được tạo bởi các khóa không thể cấu hình. Đối với nhiều khóa Ctrl+ keyShift+ Ctrl+ keytạo các chuỗi khác nhau; không may cho []họ không, vì vậy bạn không thể phân biệt chúng.

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.