Как исправить Ctrl + стрелки в Vim?

26

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

Какая часть моей конфигурации клавиатуры / терминала виновата и как это исправить?

Алекс Б
источник
PuTTY не отправляет полезные последовательности для управляющих стрелок. Ни один из предложенных ответов не является правильным (или полезным).
Томас Дики

Ответы:

27

Выясните, какую escape-последовательность отправляет ваш терминал для Ctrlстрелки Ctrl+ V, набирая + , Ctrlстрелка + в режиме вставки: буквально вставляется начальный ESCсимвол (показанный ^[в vim), за которым следует остальная часть escape-последовательности. Затем расскажите vim об этих escape-последовательностях с помощью чего-то вроде

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

Кажется, я помню, что в Putty есть настройка по умолчанию для режима Application Cursor Keys, что неудобно (я забыл почему), вы можете сначала изменить эту настройку.

Обратите внимание, что хотя escape-последовательности различаются между терминалами, конфликты (то есть escape-последовательности, которые соответствуют разным ключам в разных терминалах) редки, поэтому нет особой необходимости пытаться применять сопоставления только для конкретного типа терминала.

Жиль "ТАК - перестань быть злым"
источник
Как мне узнать, какая escape-последовательность отправлена?
Алекс Б
@ Алекс: Я пытался уточнить мое объяснение, пожаловаться, если вы все еще не понимаете мое первое предложение.
Жиль "ТАК - перестань быть злым"
Вы также можете запустить od -aили, od -cесли вы копаете восьмеричное, а затем вводите соответствующие ключи. Смотрите "добавлено" в моем ответе для примера.
2010 г.
Извините, что так поздно вернулся к этому вопросу, но я понял, что PuTTY по- прежнему отправляет клавиши управления курсором приложения на терминал, даже после того, как я полностью его выключил . Я в недоумении, что еще я должен настроить, чтобы он ушел.
Алекс Б
@ Алекс: Вам не нужно заставлять его уходить, вы можете рассказать о них вашим приложениям (что я считаю путем наименьшего сопротивления). Или вы можете заменить PuTTY одной из альтернатив, такой как mintty плюс Cygwin ssh (но это становится не по теме для этого сайта).
Жиль "ТАК - перестань быть злым"
7

Лучше всего взглянуть на конфигурацию режима клавиш курсора приложений PuTTY .

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

добавлено, вслед за Жилем

Несколько более явный вариант выхода ^ V можно увидеть с помощью od (1). Вот я набираю ^ Up, ^ Down, ^ Right, ^ Left на моем терминале:

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

Так что мой терминал отправляет, ^[[1;5Aкогда я нажимаю Ctrl+

MSW
источник
Отключение режима клавиш курсора приложения, похоже, не помогает.
Алекс Б
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
Trigal
источник
Это создает странное поведение персонажа.
Тибо
0

для моей этой и других проблем клавиатуры VIM я просто делаю

vim ~/.vimrc
set nocompatible
zainengineer
источник