Подтвердить что ты не робот

Клавиши со стрелками набирают заглавные буквы вместо перемещения курсора

Я установил последний vim с помощью homebrew, а также установил mac-vim с домашней страницы Google. в mac-vim все работает нормально. но когда я запускаю vim в terminal.app в mac и перехожу в режим вставки, я получу A B C D для клавиш со стрелками, что крайне раздражает.

Я просмотрел его и попробовал все решения, но для меня ничего не работает!

он становится интересным, когда я запускаю vim с помощью vim -u NONE -U NONE -N, тогда клавиши со стрелками начинают нормально функционировать в режиме вставки.

Мои файлы vimrc являются клонами janus (from carlhuda)

У вас такая же проблема в терминале? есть ли способ исправить его в terminal.app?

4b9b3361

Ответ 1

Просто создайте пустой файл .vimrc в домашнем каталоге удаленной машины. Он начал работать отлично для меня.

touch ~/.vimrc

Ответ 2

Вам нужно установить совместимый режим в vim Попробуйте выполнить следующую команду в обычном режиме

:set nocompatible

Ответ 3

Это работает для меня:

map ^[[A <up>
map ^[[B <down>
map ^[[C <right>
map ^[[D <left>

Чтобы ввести последовательность для каждой клавиши со стрелкой, вам нужно нажать ctrl - v, затем клавишу со стрелкой.

Например, чтобы ввести первую строку:
m, a, p, space, ctrl - v, , space, <, u, p, >

Это также может работать:

set t_ku=^[[A
set t_kd=^[[B
set t_kr=^[[C
set t_kl=^[[D

Дополнительная информация доступна здесь.

Ответ 4

Я работаю на MacBook Pro с OSx El Captain (версия 10.11.1) и испытывал такую ​​же проблему после обновления моего Vim с помощью Homebrew.

Моя версия Vim - 7.4.1063.

У меня возникла проблема с приложением Terminal, а также с приложением iTerm (сборка 2.1.4).

Чтобы решить эту проблему, я выполнил некоторые из инструкций предыдущих ответов от @devsathish и @Kailash. Последовали следующие шаги:

1 - Создайте файл .vimrc с помощью touch ~/.vimrc
2 - Добавьте к нему следующее:

set nocompatible
set backspace=indent,eol,start

Теперь клавиши со стрелками и клавиши удаления/возврата работают должным образом. Мне не нужно было менять свою переменную $TERM env, как это было предложено в некоторых предыдущих ответах.

Я надеюсь, что это поможет другим с той же проблемой.

Ответ 5

Я использую iTerm2 с spf13-vim и имею такую ​​же проблему сегодня.

Это вызвано удалением плагина vim-autoclose. Это решение исправило это.

Просто добавьте следующие строки в ваш .vimrc

if &term[:4] == "xterm" || &term[:5] == 'screen' || &term[:3] == 'rxvt'
  inoremap <silent> <C-[>OC <RIGHT>
endif

Ответ 6

Это обычно вызвано неправильной переменной среды $TERM. Не уверен, какие из них поддерживаются в вашей системе, но вы можете попробовать с помощью "linux" или "vt320":

export TERM = linux

Ответ 7

Чтобы убедиться, что мой терминал отлично работает с Vim 7.3 в Show Leopard, я сделал следующее:

  • Установлен последний Vim через Homebrew.
  • Задайте путь, чтобы включить последний Vim. Например: export PATH=/usr/local/bin:$PATH
  • Добавлен export TERM=linux в мой .bashrc файл.
  • Создал файл .vimrc с некоторыми параметрами (ранее связанный здесь, ссылка пошла в прошлое.)

Когда это делается, все должно работать. Тем не менее, я испытал, что какой-то текст, кажется, не удаляется, как и его защищенный, до тех пор, пока я не dd или x. Кто-нибудь испытал что-то подобное? Также, пожалуйста, поделитесь комментариями к моему маленькому руководству выше.

Ответ 8

Это то, что сработало для меня (на основе первоначального решения от @Phoenix выше)

imap ^[OA <ESC>kli
imap ^[OB <ESC>jli
imap ^[OC <ESC>lli
imap ^[OD <ESC>hli

для каждого ^ [
введите последовательность, нажмите ctrl-v, затем ESC

Ответ 9

Я использовал следующий код в моем файле .vimrc, и он решил проблему со стрелками.

...
...
" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible

" allow backspacing over everything in insert mode
set backspace=indent,eol,start
...
...

" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>

" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
  set mouse=a
endif
...
...   

Я опубликовал свой полный .vimrc файл здесь. Надеюсь, это поможет!

Ответ 10

Ничто из этого не помогло мне. Запуск vim в пустом состоянии с vim -u NONE -U NONE -N заставил его работать нормально, и поскольку у меня не было никаких плагинов, я знал, что проблема в моем vimrc. Поэтому я начал комментировать разделы, и в один момент проблема исчезла.

Преступником была эта строка: inoremap

Даже если это было рекомендовано в очень хорошо написанном курсе (http://learnvimscriptthehardway.stevelosh.com/chapters/10.html), он сломал клавиши со стрелками в Mac OS X 10.10, В принципе, вы не должны перезаписывать esc, как объясняет другой ответ SO: Как отключить Esc и клавиши курсора в vim

Ответ 11

У меня была аналогичная проблема с другим плагином. Я решил это путем жесткого кодирования этих альтернативных отображений в самом script, первая строка каждой пары была проблематичной, вторая строка - исправление:

VIM::command "#{map} <Right> :call <SID>#{prefix}KeyPressed(9)<CR>"
VIM::command "#{map} ^[OC    :call <SID>#{prefix}KeyPressed(9)<CR>"

VIM::command "#{map} <Left>  :call <SID>#{prefix}KeyPressed(23)<CR>"
VIM::command "#{map} ^[OD    :call <SID>#{prefix}KeyPressed(23)<CR>"

VIM::command "#{map} <Down>  :call <SID>#{prefix}KeyPressed(14)<CR>"
VIM::command "#{map} ^[OB    :call <SID>#{prefix}KeyPressed(14)<CR>"

VIM::command "#{map} <Up>    :call <SID>#{prefix}KeyPressed(16)<CR>"
VIM::command "#{map} ^[OA    :call <SID>#{prefix}KeyPressed(16)<CR>"

^[ получается нажатием <C-v><Esc>.

Возможно, вы можете попробовать что-то вроде:

map <Right> ^[OC

Ответ 12

Я решил это на OS X Mavericks (10.9), удалив set noesckeys из ~/.vimrc

Ответ 13

Я столкнулся с этой проблемой. Он имеет несколько причин, но один из них - vim, используя по умолчанию поведение vi, а не vim. Удивительно, но это может быть вызвано расположением вашего файла vimrc.

Например, если вы удалите свой .vimrc из своего домашнего каталога и переместите содержимое в общесистемный файл vimrc, vim начнет использовать значения по умолчанию vi. С Mac Terminal это даст вам ABCD из стрелок в режиме вставки. Добавьте "set nocompatible" в общесистемный vimrc, который заставит vim использовать значения по умолчанию vim, и стрелки снова будут работать.