Як надіслати сигнал ESC до vim, коли мій ключ esc не працює?


20

У мене проблема з Escключем, коли я хочу повернутися до інтерактивного режиму з режиму вставки. Чи існує ще одна клавіша, яка використовується для звільнення режиму вставки.


13
Управління пресою[
Томас Дікі

3
На vi.stackexchange.com/q/300/9708 теж кілька пропозицій .
Хлопець

2
новий Macbook Pro? <grin>
Rui F Ribeiro

2
ні, thinkpad x1 carbon
Сандра Росс

Відповіді:


7

Незважаючи на існуючі рішення, звичайне рішення Vim - це перевпорядкування ключів у вашій .vimrcконфігурації. Насправді, у багатьох користувачів Vim є легший доступний ключ, який перезавантажений Esc. Популярні варіанти - Ctrl+ Enter, або jjтощо

Щоб увімкнути це, просто помістіть щось подібне до свого .vimrcі перезавантажте його / перезапустіть Vim:

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

Більше інформації та альтернатив


1
Ейуп, це шлях Віма. Ще один поширений спосіб, який пропагує Learn Vim the Hard Way (книга),inoremap jk <Esc>
grochmal

Це приємне рішення, але яка проблема використовувати лише Ctrl + Enter + j?
Сандра Росс

@SandraRoss Ви дійсно можете використовувати будь-яку комбінацію клавіш, яку ви хочете (хоча, майте на увазі, що деякі, наприклад Ctrl-Enter, не працюють на macOS). Слід сказати, що Ctrl + Enter + j видає мене складніше набрати, і я, чесно кажучи, не знаю, чи можна навіть налаштувати комбінації трьох клавіш за допомогою двох немодифікаційних клавіш (Enter, j) у Vim.
Конрад Рудольф

Гаразд, беруся на себе. Насправді, Ctrl + Enter + jj для мене не працює, тому що, дійсно, я використовую macos X. Принаймні, ви можете сказати мені, що я маю ввести лише для Ctrl + j.
Сандра Росс

@SandraRoss Для цього inoremap <C-j> <Esc>слід працювати. :-)
Конрад Рудольф

32

Ctrl- [надсилає той же символ до терміналу, що і фізичний Escключ. Останнє - це просто ярлик для першого, взагалі.


3
Колись у мене був справжній термінал vt220, а на його клавіатурі немає Escapeклавіші. Пресування Ctrl+[було єдиним способом генерування Escape.
Kusalananda

11

Якщо ви хочете мати можливість використовувати один ключ, як чисте рішення * nix (без відображення Vim) ви можете визначити інший ключ як Esc. Так само , як користувачі Emacs перепризначити CapsLockдля Ctrlдеяких користувачів Vim (включно зі мною) перепризначити CapsLockдо Esc. Це працює для будь-якого * nix за допомогою X11.

Використовуйте xev -event keyboard(а потім натисніть CapsLock), щоб отримати код CapsLockключа для мене (для мене це клавішний код 66). Потім ви можете xmodmapперезавантажити ключ:

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

Щоб отримати це під час входу, ви можете додати xmodmapвирази ~/.Xmodmapтаким чином:

remove Lock = Caps_Lock
keycode 66 = Escape

Хоча для другої частини YMMV, оскільки не всі менеджери дисплеїв працюють ~/.Xmodmap. Можливо, вам доведеться додати xmodmap .Xmodmapдо .xinitrcдеяких із них.


Я точно знаю, що ти маєш на увазі. Я бачив це раніше цього тижня
Сандра Росс

Я б це зробив, але я використовую CapsLock як мій ключ Compose (:
DopeGhoti

6

Ви можете спробувати Ctrl-C, який працює для мене і, на мій погляд, простіше, ніж ESC. Однак я не впевнений, чи він включений за замовчуванням.


CTRL-C ASCII 0x03, посилає SIGINT в оболонку - це не те саме, що ESC.
кіт

@cat Це в основному те саме, що і у vim. Я завжди використовую Ctrl-C замість Esc
Erik W

1
@cat: Ви отримуєте це безкоштовно, тому що vim має цей обробник на місці. Вам нічого не потрібно робити самостійно. Ця відповідь працює нестандартно; Я просто спробував це. Чи працює він взагалі для будь-якої програми? Ні, але це не те, що просили.
Гонки легкості з Монікою

2
@cat: Дійсно? Заголовок: "Як надіслати сигнал ESC на vim, коли мій ключ esc не працює?", єдиний тег - vim , і проблема, описана в питанні, - це вихід із режиму вставки Vim. Ось узагальнююча частина запитання: "Чи існує ще один ключ, який використовується для звільнення режиму вставки". Якщо це не специфічно для Vim та його режиму вставки, то я не знаю, що таке!
Гонки легкості з Монікою

1
@LightnessRacesinOrbit Добре, коли я побачив заголовок спочатку, це був "Ще один ключ, який використовується для Esc", і питання зовсім не виглядало конкретним vim. вибачте! ¯_ (ツ) _ / ¯
кіт

-3

Ctrl + F2

Увімкнено за замовчуванням. Не потрібно налаштовувати жодних налаштувань.

Ви перейдете до звичайного режиму, де зможете робити :q! or :wq.


3
Ctrl+F2може відправити втечу, але воно також надішле інші речі.
Kusalananda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.