Phím Remap Esc trong Vim


12

Có thể sắp xếp lại Esckhóa này sang khóa khác trong Vim không? Khi tôi đang sử dụng Vim trong cửa sổ bảng điều khiển máy khách web VMware vSphere toàn màn hình và tôi nhấn Escphím để thoát chế độ chỉnh sửa, nó cũng đưa tôi ra khỏi chế độ toàn màn hình trong cửa sổ bảng điều khiển.

Tôi đang sử dụng Vim xuất phát từ repo của RHEL YUM. (RHEL 7.5; Vim 7.4).



2
Dù bạn làm gì, đừng ánh xạ esc sang thứ khác. Bản đồ một cái gì đó khác để thoát.
D. Ben Knoble

Câu trả lời:


10

Thông thường, C-[cũng là một cách để thoát khỏi chế độ chèn. Một số người thích ánh xạ jjtrong chế độ chèn như một cách để thoát và trở về chế độ bình thường. Cá nhân tôi thích jhngón tay của mình 'trượt' hơn với điều này và tôi không làm căng ngón tay giữa của mình nhiều.

Từ một nơi nào đó trong cài đặt neovim của tôi:

inoremap jh <Esc>

Điều này remaps jhđể thoát trong chế độ chèn.

Đây có phải là điều bạn muốn không?


3
Ctrl- [giống với 'ESC'
Herb Wolfe

Tôi đã chơi xung quanh và cũng phát hiện ra tác phẩm này: ": inoremap <F1> <Esc>". Điều này ánh xạ phím F1 ở vị trí của phím Esc. Điều này có thể được rút ngắn thành ": ino <F1> <Esc>".
Beam Davis

Ngoài ra, chữ in hoa không cần thiết.
Beam Davis

Vâng, thủ đô không cần thiết và 'ino' ngắn hơn để viết, nhưng trong cấu hình của tôi, tôi thích sự ngắn gọn hơn các phím tắt mát mẻ. Tôi rất vui vì tôi đã giúp!
Amir Eldor

Mặc dù sự mát mẻ là tuyệt vời và tất cả mọi thứ ... đó là linh hồn của sự dí dỏm ... Tôi đoán bạn có ý gì khác. Trong trẻo? Độ dài? Không ngắn gọn? ;)
Lớp B

6

TL; DR

Nó thực sự tốt đẹp để ánh xạ lại esccho hàng nhà. Đây là cách bạn quyết định ánh xạ tới nó: Chọn một bàn tay và cuộn 4 ngón tay trên máy tính để bàn của bạn nhanh nhất có thể theo hướng nào là nhanh nhất. Sử dụng để chọn phím nào để ánh xạ lại.

Đối với tôi, việc lăn từ ngón út sang ngón trỏ sẽ tự nhiên hơn. Do đó tôi chọn sử dụng kj. Ngoài ra, tôi đã thực hiện grep -rHin kj ~/src(grep đệ quy trên thư mục mẹ của tất cả mã nguồn của mình) và không tìm thấy kết quả khớp nào.

" esc in insert mode
inoremap kj <esc>

" esc in command mode
cnoremap kj <C-C>
" Note: In command mode mappings to esc run the command for some odd
" historical vi compatibility reason. We use the alternate method of
" existing which is Ctrl-C

Lưu ý: Nếu bạn cần phải nhập một chữ kj(hoặc bất kể ánh xạ của bạn là gì) chỉ cần nhập chúng với 2 giây ở giữa. (Bạn sẽ thấy con trỏ ngần ngại di chuyển sau char thứ 1. Đợi nó di chuyển trước khi gõ thứ 2.)


Tôi đã sử dụng được vim19 năm. Tôi đã rất kinh hoàng khi Apple cập nhật MacBook Pro của họ để có một thanh cảm ứng và không có escphím vật lý . Tôi thấy một bài mà đề nghị lập bản đồ jjjkđể <Esc>và ghét nó. Nhưng tôi kiên nhẫn ghi lại vào một thẻ chỉ mục mỗi khi nó làm tôi khó chịu. Khoảng 15 phút sau tôi đã xem lại các ghi chú của mình và tìm ra TL; DR ở trên để giải quyết các vấn đề sau:

  1. Tôi có xu hướng nhấn escphân bổ khi tôi không ở chế độ chèn chỉ để "chắc chắn" và jjsẽ thả tôi 2 dòng.
  2. jklà một no-op (xuống, lên) nhưng kjlà tự nhiên hơn cho bàn tay của tôi.
  3. Tôi cũng cần sử dụng escđể thoát chế độ lệnh mà không hoàn thành lệnh.

Tôi hy vọng rằng cuối cùng tôi cũng có thể bỏ thói quen đánh escvào các ứng dụng khác và đóng cửa sổ khi tôi viết được vài phút. Tôi muốn chèn các ký tự kj đi lạc hơn là mất công việc của tôi!


1
Lưu ý, đối với cnoremap của bạn, khi esc xuất phát từ ánh xạ, nó sẽ thực thi lệnh, thay vì hủy bỏ nó. Đó là vì lý do tương thích với vi
Christian Brabandt

Trong cả chế độ chèn và lệnh, esc vẫn hoạt động. Nhưng, bạn cũng có combo hàng chủ nhà thay thế này mà bạn cũng sử dụng. Có lẽ tôi đã không làm theo quan điểm của bạn.
Bruno Bronosky

2
vấn đề là, đối với chế độ lệnh, một lối thoát xuất phát từ ánh xạ sẽ không hủy bỏ lệnh mà chạy nó. Hãy thử:ls kj
Christian Brabandt

@ChristianBrabandt bạn đúng. Có thể làm gì về nó? Hoặc ít nhất, tài liệu này ở đâu? Tôi thậm chí không thể đưa ra các thuật ngữ tìm kiếm phong nha để tìm bất cứ điều gì về điều này.
Bruno Bronosky

1
Tôi không nhớ liệu điều này có được ghi nhận hay không, tôi đã vấp phải hành vi đó vài năm trước. À, nó là loại tài liệu tại :h c_Esc: Trong macro [...] bắt đầu nhập lệnh. (Macros thường bao gồm ánh xạ)
Christian Brabandt
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.