Клавиши со стрелками самопроизвольно перестают работать в 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

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


Я также только что понял, что есть Apple-ориентированный форум, для которого этот вопрос мог бы лучше подходить. Так что, если это скорее условие OS X, чем vim, возможно, мод может перенести это для меня.
— svidgen

2
Напоминает мне о работе на мейнфрейме «Прайм» в колледже. Профессор учил, что вы никогда не должны использовать клавиши со стрелками vi. Всегда используйте hjkl. Вот где клавиши «стрелка» используются на древнем оборудовании.
— Красный Крикет

ОК ... Но клавиши со стрелками должны работать. Независимо от того, считает ли ваш профессор, что я должен их использовать. И я нахожу их удобными время от времени. Итак, с нетерпением жду решения.
— svidgen

1
что происходит, когда вы вставляете ключевой литерал в буфер? перейдите в режим вставки и нажмите Ctrl + v, затем клавишу со стрелкой. Vim на моем Mac показывает клавишу со стрелкой вверх как ^[OA, вниз как ^[OB, вправо как ^[OCи слева как ^[OD. проверить до и после того, как проблема представится
— Натан Уоллес

@NathanWallace не уверен, как я пропустил твой вопрос. Я попробую это, когда буду на моем Mac рядом.
— svidgen

Ответы:


24

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

:!reset

Не уверен, как я пропустил этот ответ, но он выглядит очень многообещающе!
— 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 будет получено на удаленном сервере. В наши дни я бы поспорил, что большинство серверов поддерживают оба этих типа терминалов.


Хм ... Я еще больше запутался. Я думал, что у меня есть глобальные .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 → когда вы потеряете способность использовать стрелку, выполните эту команду и посмотрите, исчезло ли отображение. если это так, это дает вам место, чтобы начать копаться в.


0

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

exit
ssh ...

Спасибо за взвешивание. Выбранный ответ последовательно работал для меня, хотя. Ты пробовал это?
— svidgen

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

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.