Клавиши со стрелками самопроизвольно перестают работать в VIM

25

Я недавно обновился с OS X 10.6 (я думаю) до 10.9. С тех пор кажется, что при редактировании vimклавиши со стрелками «самопроизвольно» перестанут работать.

В какой-то момент я в отчаянии «нажал» одну из клавиш со стрелками, и в итоге мне показалась ошибка «E388 Не удалось найти определение». Все остальное время, когда я это испытывал, стрелы, поработав некоторое время, внезапно начинают болеть !

Выход и повторное открытие временно решает проблему . Но я бы хотел это предотвратить !

Кто-нибудь знает, что это может быть? И как это исправить?


Похоже, мои настройки по умолчанию vimrcбыли изменены во время обновления. Если моя память верна, это был довольно большой файл ранее. Теперь он просто содержит это:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

Я понятия не имею, что делают эти варианты еще. Я посмотрю на это - но, надеюсь, кто-то здесь знает быстрее, чем я могу гуглить и читать ...

svidgen
источник
Я также только что понял, что есть Apple-ориентированный форум, для которого этот вопрос мог бы лучше подходить. Так что, если это скорее условие OS X, чем vim, возможно, мод может перенести это для меня.
svidgen
2
Напоминает мне о работе на мейнфрейме «Прайм» в колледже. Профессор учил, что вы никогда не должны использовать клавиши со стрелками vi. Всегда используйте hjkl. Вот где клавиши «стрелка» используются на древнем оборудовании.
Красный Крикет
ОК ... Но клавиши со стрелками должны работать. Независимо от того, считает ли ваш профессор, что я должен их использовать. И я нахожу их удобными время от времени. Итак, с нетерпением жду решения.
svidgen
1
что происходит, когда вы вставляете ключевой литерал в буфер? перейдите в режим вставки и нажмите Ctrl + v, затем клавишу со стрелкой. Vim на моем Mac показывает клавишу со стрелкой вверх как ^[OA, вниз как ^[OB, вправо как ^[OCи слева как ^[OD. проверить до и после того, как проблема представится
Натан Уоллес
@NathanWallace не уверен, как я пропустил твой вопрос. Я попробую это, когда буду на моем Mac рядом.
svidgen

Ответы:

24

Найденная в блоге Джеймса Ходжкинсона , следующая команда работает для меня. Обратите внимание, что это обновит экран vim.

:!reset
Ronnefeldt
источник
Не уверен, как я пропустил этот ответ, но он выглядит очень многообещающе!
svidgen
Фактически ... нажатие Ctrl + R, как описано в статье, воспроизводит проблему в полном соответствии с неправильными отображениями клавиш со стрелками, отмеченными в моем ответе Натану выше. И команда сброса решает это в этом случае. И .. Я не могу надежно воспроизвести проблему любым другим способом, так что это, безусловно, самый полезный ответ!
svidgen
11

Я сталкивался с этой проблемой также несколько раз. Я случайно запустил экран GNU на другом компьютере, на котором я вошел через SSH. Чтобы решить эту проблему, я отключил экран (ы) ( Ctrl- a d), вышел из системы, снова вошел в систему и снова подключился с помощью screen -x. Он может работать без выхода из машины, просто отсоединив и снова установив экран. Я не могу вспомнить, хотя

Тайсон
источник
Закрытие сеанса экрана и перезапуск исправили это для меня.
Ино,
1
это была проблема для меня. Каким-то образом screenпопал в состояние фанка (через ssh-соединение). Закрыв этот терминал, затем снова ssh, и screen -rdсделал свое дело. Благодарность!
Пьер Д
@PierreD правильно, я уже несколько раз сталкивался с этой проблемой - также в screenсеансе Detach & Reattach решил проблему, спасибо!
stdcerr
6

В пути /usr/share/vim/я нашел .vimrcфайл ... Там я добавил строку

set term=ansi 

Это сработало для меня. Теперь клавиши со стрелками работают правильно в редакторе Vim.

Ануп Кумар
источник
2
Это исправило и меня, так как последнее обновление Windows 10 WSL / Ubuntu сломало его.
Грей Фокс
3

Это звучит очень похоже на вашу проблему. Статья под названием: Курсорные клавиши в Vim: Ты, Mac'ing Me Crazy! ,

выдержка

Vim полезен во многих ситуациях, особенно для быстрого редактирования (особенно с правами суперпользователя) и редактирования файлов на удаленном сервере. Одно раздражение, которое я испытывал в течение моих девяти месяцев работы с Mac Book Pro, - это клавиши курсора в Vim, звонящие в колокол как в режиме вставки, так и в командном режиме вместо смены строк. Обновление до версии 7 через MacPorts дало те же результаты. Клавиши курсора сработали после переключения моего TERM на VT220 с rxvt! Недостатком было то, что подсветка синтаксиса перестала работать.

К счастью, добавление VT220 к моим параметрам поиска в Google привело к появлению ссылки на vt100-курсорные клавиши в документации Vim. Добавьте следующий код в ваш файл .vimrc, чтобы решить эту проблему:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

В той же статье есть еще одно предложение настройки вашего $TERMTo linuxвместо этого на OSX.

выдержка

Лучшее решение состоит в том, чтобы изменить значение по умолчанию для TERM на linux или dtterm, поскольку значение TERM будет получено на удаленном сервере. В наши дни я бы поспорил, что большинство серверов поддерживают оба этих типа терминалов.

SLM
источник
Хм ... Я еще больше запутался. Я думал, что у меня есть глобальные .vimrcфайлы / файлы по умолчанию . Они были бы перемещены или удалены во время обновления OS X?
svidgen
@svidgen - Нет, я не думаю, что это изменилось бы, но эта проблема звучала очень похоже на вашу, и исправить это достаточно легко, поэтому я решил поделиться с вами. Кстати, это $TERMмогло измениться на вас.
SLM
Дракончик, это, безусловно, самый актуальный ответ здесь. +1 за это. К сожалению, пока я не уверен, исправит ли это, поскольку я не могу последовательно воспроизвести проблему.
svidgen
После применения этого исправления проблема возникла снова. Еще актуальный ответ, оставив +1. Но, пожалуйста, смотрите мой комментарий выше, если вы заинтересованы в предоставлении дополнительного ответа.
svidgen
0

Поздравляю с обновлением. Я сделал свое собственное обновление за выходные и имел дело с некоторыми из моих собственных странных проблем с клавиатурой.

Вот пара вещей, которые мне нужны:

  • Удалите старое игровое программное обеспечение Logitech и обновите его. До этого у меня были проблемы с использованием моих квадратных и фигурных скобок. Специальные ключи часто отправляют Esc-последовательности в контексте VIM, так что это может иметь значение.
  • Зайдите в Системные настройки: Безопасность и конфиденциальность: Конфиденциальность: Доступность и включите несколько приложений (synergy_server и игровое программное обеспечение Logitech). До этого изменения я не мог управлять другими компьютерами с помощью синергии или использовать макросы с моим G11. Я сомневаюсь, что это прямое соединение для вас, но опции специальных возможностей являются новыми и могут применяться к некоторым другим вашим приложениям.
Тодд Пайк
источник
0

Если вы работаете с .sqlфайлами в vim(вы не упоминаете), это может вам помочь. Я только что имел дело с этим на днях.

В файле ~/.vimrc

let g:omni_sql_no_default_maps = 1

этот конкретный вопрос обсуждается здесь

Если вы не столкнулись с этой проблемой с .sqlфайлами, vimто я приношу свои извинения, единственной мыслью было бы проверить соответствие в момент vimвозникновения проблемы.

:map Ctrl V → когда вы потеряете способность использовать стрелку, выполните эту команду и посмотрите, исчезло ли отображение. если это так, это дает вам место, чтобы начать копаться в.

driz
источник
0

У меня была эта проблема в сеансе SSH, и я решил ее, выйдя из системы, а затем снова вернулся:

exit
ssh ...
duhaime
источник
Спасибо за взвешивание. Выбранный ответ последовательно работал для меня, хотя. Ты пробовал это?
svidgen
Да, принятое решение не сработало в Ubuntu 18. Я даже удалил и переустановил vim (в том же сеансе ssh) и без кубиков. Только выйдя из системы, затем вернитесь обратно, чтобы восстановить функциональность стрелки.
Духайме
0

У меня была эта проблема, когда я использовал «системную переменную среды» в Windows, установив TERMв xterm-256color. Проблема исчезла (и моя vimнормализовалась), когда я снова удалил переменную.

Birb
источник