Làm cách nào để gửi tín hiệu ESC đến vim khi khóa esc của tôi không hoạt động?


20

Tôi gặp sự cố với Escphím khi tôi muốn quay lại chế độ tương tác từ chế độ chèn. Có tồn tại một khóa khác được sử dụng để phát hành chế độ chèn.


13
Kiểm soát báo chí[
Thomas Dickey

3
Khá nhiều đề xuất trên vi.stackexchange.com/q/300/9708 .
Guy

2
Macbook Pro mới? <grin>
Rui F Ribeiro

2
không, thinkpad x1 carbon
Sandra Ross

Câu trả lời:


7

Các giải pháp hiện có mặc dù, giải pháp thông thường trong Vim là ánh xạ lại các phím trong .vimrccấu hình của bạn . Trên thực tế, nhiều người dùng Vim có một khóa dễ tiếp cận được ánh xạ tới Esc. Các lựa chọn phổ biến là Ctrl+ Enter, hoặc jj, v.v.

Để kích hoạt tính năng này, chỉ cần đặt một cái gì đó như sau vào .vimrcvà tải lại / khởi động lại Vim:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Thêm thông tin và lựa chọn thay thế


1
Eyup, đó là cách Vim. Một cách phổ biến khác được quảng bá bởi Tìm hiểu Vim the Hard Way (cuốn sách) làinoremap jk <Esc>
hóa học

Đây là một giải pháp tốt, nhưng vấn đề chỉ sử dụng Ctrl + Enter + j là gì?
Sandra Ross

@SandraRoss Bạn thực sự có thể sử dụng bất kỳ tổ hợp phím nào bạn thích (mặc dù hãy cẩn thận với một số, ví dụ: Ctrl-Enter, không hoạt động trên macOS). Điều đó nói rằng, Ctrl + Enter + j khiến tôi khó nhập hơn và thực sự tôi không biết liệu bạn có thể định cấu hình tổ hợp ba phím với hai phím không sửa đổi (Enter, j) trong Vim hay không.
Konrad Rudolph

Ok, tôi undertand. Trên thực tế, Ctrl + Enter + jj không hoạt động với tôi, bởi vì, thực sự, tôi sử dụng macos X. Ít nhất, bạn có thể cho tôi biết những gì tôi phải nhập chỉ cho Ctrl + j.
Sandra Ross

@SandraRoss Vì điều đó, inoremap <C-j> <Esc>nên làm việc. :-)
Konrad Rudolph

32

Ctrl- [gửi cùng ký tự đến thiết bị đầu cuối dưới dạng Esckhóa vật lý . Cái sau chỉ đơn giản là một phím tắt cho cái trước, nói chung.


3
Tôi đã từng có một thiết bị đầu cuối vt220 thực sự, và bàn phím của nó không có Escapephím. Nhấn Ctrl+[là cách duy nhất để tạo ra Escape.
Kusalananda

11

Nếu bạn muốn có thể sử dụng một khóa duy nhất, như một giải pháp * nix thuần túy (không có ánh xạ Vim), bạn có thể định nghĩa một khóa khác là Esc. Cũng giống như người dùng Emacs remap CapsLockđể Ctrlmột số người dùng Vim (tôi bao gồm) remap CapsLockđể Esc. Điều này hoạt động cho bất kỳ * nix bằng X11.

Sử dụng xev -event keyboard(và sau đó nhấn CapsLock) để lấy mã CapsLockkhóa cho khóa (đối với tôi đó là mã khóa 66). Sau đó, bạn có thể sử dụng xmodmapđể ánh xạ lại khóa:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

Để có được điều này khi đăng nhập, bạn có thể thêm các xmodmapbiểu thức ~/.Xmodmapnhư sau:

remove Lock = Caps_Lock
keycode 66 = Escape

Mặc dù đối với YMMV phần thứ hai, vì không phải tất cả các trình quản lý hiển thị đều chạy ~/.Xmodmap. Bạn có thể cần phải thêm xmodmap .Xmodmapvào .xinitrctrên một số trong số họ.


Tôi biết chính xác ý của bạn là gì. Tôi đã thấy điều đó vào đầu tuần này
Sandra Ross

Tôi sẽ làm điều đó, nhưng tôi sử dụng CapsLock làm khóa soạn thảo của mình (:
DopeGhoti

6

Bạn có thể thử Ctrl-C, nó hoạt động với tôi và theo ý kiến ​​của tôi dễ dàng hơn ESC. Tuy nhiên tôi không chắc chắn nếu nó được bật theo mặc định.


CTRL-C là ASCII 0x03, gửi SIGINT đến trình bao - không giống như ESC.
mèo

@cat Nó hoạt động về cơ bản giống nhau trong vim mặc dù. Tôi luôn sử dụng Ctrl-C thay vì Esc
Erik W

1
@cat: Bạn có được nó miễn phí, vì vim có trình xử lý đó. Bạn không phải tự làm bất cứ điều gì. Câu trả lời này hoạt động ra khỏi hộp; Tôi chỉ thử nó. Nó hoạt động nói chung cho bất kỳ ứng dụng? Không, nhưng đó không phải là những gì được yêu cầu.
Cuộc đua nhẹ nhàng với Monica

2
@cat: Thật sao? Tiêu đề là "Làm cách nào để gửi tín hiệu ESC đến vim khi khóa esc của tôi không hoạt động?" , thẻ duy nhất là vim và vấn đề được mô tả trong câu hỏi là về việc thoát chế độ chèn của Vim. Đây là phần tóm tắt của câu hỏi: "Có tồn tại một khóa khác được sử dụng để giải phóng chế độ chèn không." Nếu điều đó không cụ thể với Vim và chế độ chèn của nó, thì tôi không biết nó là gì!
Cuộc đua nhẹ nhàng với Monica

1
@LightnessRacesinOrbit Vâng, khi tôi nhìn thấy tiêu đề ban đầu, đó là "Một khóa khác được sử dụng cho Esc" và câu hỏi hoàn toàn không có vẻ cụ thể vim. lấy làm tiếc! _ (ツ) _ /
mèo

-3

Ctrl + F2

Được bật theo mặc định. Không cần phải cấu hình bất kỳ cài đặt.

Bạn sẽ chuyển sang chế độ bình thường, nơi bạn có thể làm :q! or :wq.


3
Ctrl+F2có thể gửi một lối thoát, nhưng nó cũng sẽ gửi những thứ khác.
Kusalananda
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.