Почему Vim ест Ctrl при использовании с Ctrl + v и как его исправить?

Я использую Vim /etc/zsh/zshrc чтобы добавить привязки клавиш для zsh потому что он не работает с inputrc . В моем терминале с tmux, когда я набираю Ctrl + v, тогда Ctrl + LeftArrow оболочка покажет ^[OD . Однако, когда я вхожу в режим вставки Vim, нажатие той же последовательности приведет к ^[[D

Я узнал, что ^[[D – это то, что создает оболочка, когда я набираю Ctrl + v, а затем LeftArrow . Я также изменил ^[[D на ^[OD в файле /etc/zsh/zshrc и работает как ожидалось (нажатие Ctrl + LeftArrow заставляет курсор перемещать слово). Вот строка, о которой я говорю:

 bindkey "^[OD" backward-word 

Я думаю, что что-то не так с Vim, потому что он использует Ctrl . Как это исправить?

  • Как предотвратить `git difftool` от вызова другого` vimdiff`?
  • Vim powerline плагин цвет нормального режима
  • Как заменить слова в файле git rebase
  • Почему Вим иногда показывает эти странные персонажи?
  • автоматическая замена vim
  • Использование! в VIM
  • Машина сохраняет резервные копии файлов, которые я уже удалил
  • Установите makeprg в gradlew
  • One Solution collect form web for “Почему Vim ест Ctrl при использовании с Ctrl + v и как его исправить?”

    На самом деле ваш терминал делает что-то странное, а не Vim. Терминалы имеют два набора управляющих последовательностей, связанных с клавишами курсора, по историческим причинам : один для полноэкранных приложений, часто называемый «режим клавиш курсора приложения», и один для приложений с проверкой подлинности (например, оболочек).

    В прежние времена приложения чтения-eval-print не имели каких-либо функций редактирования линии, и предполагалось, что терминал или драйвер операционной системы OS в конечном итоге станут более сложными. Таким образом, терминал отправил управляющие последовательности, предназначенные для драйвера терминала. Так или иначе, драйверы терминалов Unix никогда не получали достойных функций редактирования линии; они были добавлены вместо приложений (например, через библиотеку readline).

    Ваш терминал отправляет ␛OD для Ctrl + Left в режиме курсора в ␛[D и ␛[D в режиме клавиш курсора приложения. У вас есть два варианта:

    • Настройте свой терминал, чтобы не менять разницу между двумя режимами. Как это сделать полностью зависит от вашего эмулятора терминала.
    • Живи с этим. Поскольку любое заданное приложение всегда устанавливает терминал в том же режиме, просто настройте его привязки клавиш в соответствии с режимом, который он использует.
    Linux и Unix - лучшая ОС в мире.