Клавіші зі стрілками мимовільно перестають працювати у 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, на який це питання краще підходить. Отже, якщо це швидше умова ОС X, ніж vim, можливо, мод міг би це мігрувати для мене.
svidgen

2
Нагадує мені працювати над основним кадром "Prime" в коледжі. Професор навчав, що ніколи не слід використовувати клавіші зі стрілками 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: Ти мене зводив з розуму! .

витяг

Vim корисний у багатьох ситуаціях, особливо для швидкого редагування (особливо як root) та редагування файлів на віддаленому сервері. Одне роздратування, яке у мене було протягом дев'яти місяців із 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

У цій же статті є ще одна пропозиція встановити свій $TERMна, 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) і жодних кісток. Лише вийдіть із системи та знову відновіть функціональність стрілки.
duhaime

0

У мене виникла ця проблема, коли я використовував "змінну системного середовища" в Windows, налаштовуючи TERMна xterm-256color. Проблема вимкнулася (і vimповернулася до норми), коли я знову видалив змінну.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.