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

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

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

3 Solutions collect form web for “Как исправить Ctrl + стрелки в Vim?”

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

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

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

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

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

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

добавлено, после Жиля

С od (1) можно увидеть немного более явную версию escape-функции ^ V. Вот я набираю ^ Вверх, ^ Вниз, ^ Вправо, ^ Влево на моем терминале:

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

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

Я нашел лучшее решение здесь: 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 
  • Tmux не может различать вставку и вставку
  • Приостановите процесс молча с помощью ctrl-z
  • запустить команду редактора при выходе из режима вставки в vim
  • Удалив vim-minimal, я удалил sudo
  • Получение Alt для работы в терминале с помощью Tmux и Vim
  • Есть ли способ настроить vim для запуска внешних команд через cpanel jailshell?
  • изменить файл с помощью awk или sed
  • Ctrl-s эмулятор терминального терминала?
  • Сопоставьте команду оболочки, чтобы выполнить ее в vim
  • Две разные конфигурации vim для одного пользователя на основе псевдонима?
  • Как перейти к списку каталогов из файла в vim?
  • Linux и Unix - лучшая ОС в мире.