Як виправити Ctrl + стрілки у Vim?


26

Я використовую Putty -> Suse box -> vim 7.2комбо для редагування і хочу перевстановити комбінацію стрілок Ctrl + до певного завдання. Але чомусь Vim ігнорує ярлик і переходить у режим вставки та вставляє символ "D" (зліва) "C" (праворуч).

Яка частина моєї конфігурації клавіатури / терміналу винна і як це виправити?


PuTTY не надсилає корисно розрізнені послідовності для стрілок управління. Жодна із запропонованих відповідей не є правильною (або корисною).
Томас Дікі

Відповіді:


27

З'ясуйте, яку саме послідовність евакуації надсилає ваш термінал для Ctrlстрілки Ctrl+ V, ввівши + , Ctrl+ стрілку в режимі вставки: це буде вставляти провідний ESCсимвол (показаний як ^[у vim) буквально, а потім решту послідовності відходу. Потім розкажіть vim про ці послідовності втечі з чимось подібним

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Здається, я пам'ятаю, що для Putty встановлено за замовчуванням режим незмінного режиму клавіш управління курсором (я забув, чому), ви можете спершу змінити це налаштування.

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


Як визначити, яку послідовність вхідних повідомлень надсилається?
Алекс Б

@ Алекс: Я намагався уточнити своє пояснення, поскаржись, якщо ти все ще не розумієш мого першого речення.
Жил "ТАК - перестань бути злим"

Ви також можете запустити od -aабо od -cвикопати восьмери, а потім ввести відповідні ключі. Дивіться "доданий" у моїй відповіді для прикладу.
msw

Вибачте за те, що повернувся до цього питання так пізно, але я зрозумів, що PuTTY все ще надсилає клавіші курсору програми до терміналу, навіть після того, як я повністю вимкну його . Я в збитку, що ще мені слід налаштувати, щоб воно пройшло.
Алекс Б

@ Алекс: Вам не потрібно змушувати його зникати, ви можете розповісти про свої програми (про що я вважаю, що це шлях найменшого опору). Або ви можете замінити PuTTY однією з альтернатив, таких як м'ята плюс Cygwin ssh (але це стає поза темою для цього сайту).
Жил "ТАК - перестань бути злим"

7

Ваша найкраща ставка - це, мабуть, перегляд конфігурації режиму клавіш курсору програми PuTTY .

Послідовність за замовчуванням надсилається ESCяк префікс, а [за ним - Append, hange Cчи інші речі, що переводять вас у режим вставки.

додав, слідуючи за Жилем

Трохи більш чітку версію втечі ^ V можна побачити з od (1). Ось я набираю ^ Вгору, ^ Вниз, ^ Вправо, ^ Вліво на моєму терміналі:

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

Тож мій термінал надсилає, ^[[1;5Aколи натискаю Ctrl+


Вимкнення режиму клавіш курсору програми, здається, не допоможе.
Алекс Б

2

Тут я знайшов краще рішення: http://vim.wikia.com/wiki/Fix_arrow_keys_that_display_A_B_C_D_on_remote_shell

Просто покладіть цей рядок у свій .vimrcфайл:

:set term=cons25

Оновлення

Скопіюйте цей файл у свій /home, перейменувавши його .vimrc:

/usr/share/vim/vim_VERSION_/vimrc_example.vim

Це створює деяку дивну поведінку чару.
Тібо

0

для моєї цієї та інших проблем з клавіатурою Vim я просто роблю

vim ~/.vimrc
set nocompatible
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.