Почему 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 . Как это исправить?

One Solution collect form web for “Почему Vim ест Ctrl при использовании с Ctrl + v и как его исправить?”

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

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

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

  • Настройте свой терминал, чтобы не менять разницу между двумя режимами. Как это сделать полностью зависит от вашего эмулятора терминала.
  • Живи с этим. Поскольку любое заданное приложение всегда устанавливает терминал в том же режиме, просто настройте его привязки клавиш в соответствии с режимом, который он использует.
  • Что такое `^ M` и как я могу избавиться от него?
  • Невозможно получить vim для распознавания unicode
  • Перемещение одной строки экрана вверх / вниз в многострочном тексте
  • Почему команды не работают вместе в VIM, а только отдельно?
  • Где vim после установки pkg?
  • Получение Alt для работы в терминале с помощью Tmux и Vim
  • Сохранение с помощью CTRL-s в vim
  • Vim: преобразовать обратные к нотации $ () в сценарии оболочки
  • Открытие файлов в архивах от vim
  • Возврат каретки против новой строки в vim
  • Удалите все файлы отмены Vim во всех, кроме одного каталога
  • Linux и Unix - лучшая ОС в мире.