Клавиши со стрелками вводят заглавные буквы вместо перемещения курсора - PullRequest
26 голосов
/ 29 ноября 2010

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

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

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

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

у вас такая же проблема в терминале?Есть ли способ исправить это в Terminal.app?

Ответы [ 13 ]

44 голосов
/ 26 декабря 2012

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

touch ~/.vimrc
20 голосов
/ 06 декабря 2010

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

:set nocompatible

11 голосов
/ 17 мая 2011

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

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

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

Например, для ввода первой строки:
m , a , p , пробел , ctrl - v , , пробел , <</kbd>, u , p , >

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

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

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

9 голосов
/ 16 января 2016

Я на 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

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

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

7 голосов
/ 19 мая 2015

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

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

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

if &term[:4] == "xterm" || &term[:5] == 'screen' || &term[:3] == 'rxvt'
  inoremap <silent> <C-[>OC <RIGHT>
endif
6 голосов
/ 29 ноября 2010

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

export TERM = linux

4 голосов
/ 02 января 2011

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

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

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

3 голосов
/ 10 декабря 2014

Ничто из вышеперечисленного не сработало для меня.Запустив 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

2 голосов
/ 17 апреля 2012

Я использовал следующий код в своем файле .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 Здесь Надеюсь, это поможет!

2 голосов
/ 28 декабря 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...