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