Чому vim затримується на секунду кожного разу, коли я використовую команду 'O' (відкрийте новий рядок вгорі та вставити)?


26

Коли я використовую більшість команд, вони набувають чинності миттєво. OОднак, коли я використовую команду, я бачу, що "O" замінює поточний символ приблизно на секунду, тоді поточний символ повертається, і новий рядок вставляється та відкривається.

У мене немає такої проблеми з oкомандою (відкрийте новий рядок нижче та вставте).

Якщо це має значення, я використовую vimз bashтерміналу Gnome на Ubuntu 10.04.

Відповіді:


27

Якщо попередня натиснута клавіша була ESC, це тому, що існують клавіші, які можуть генерувати послідовності втечі, починаючи з ESC O. Наприклад, залежно від режиму клавіші курсору, клавіша зі стрілкою вгору може генерувати послідовність виходу ESC O A.

Якщо він бачить часткову послідовність відходу, vim чекатиме короткий час очікування, щоб побачити, чи отримано інший символ, який відповідає одній із послідовностей евакуації, визначеній для вашого типу терміналу. Якщо ні, то символи будуть розглядатися як окремі натискання клавіш. Ви можете перевірити це, ввівши велику літеру A, чекаючи, коли лінія відкриється, щоб побачити, чи не трактується вона як стрілка вгору.

Є деякі параметри vim, які можна використовувати для управління цим. :set ttimeoutlen=100змінить час очікування послідовності втечі на 100 мс. :set noesckeysповністю відключить розпізнавання клавіш, що надсилають послідовність вхідного режиму в режимі вставки. Також у режимі сумісності vi не буде цієї проблеми, оскільки в цьому режимі вимкнені ескізи - тому це vim -u NONEпрацює.


Просто для уточнення, мій "експеримент" з файлом рядків 140k був у повному режимі vim з моїм стандартним доповненням плагінів та файлів. Я бачу, де ви могли б зробити висновок, що я використав, -u NONEале нам все ще не вистачає підтвердження з ОП.
msw

Оце Так! це м'яко дратувало деякий час, але я ніколи про це не думав. має ідеальний сенс зараз. Esc OA справді працює як стрілка вгору.
Віталій Кушнер

2
:set noesckeysМабуть, не те, що ви хочете - встановіть його, а потім натисніть клавіші зі стрілками в режимі вставки, навіть якщо ви не плануєте їх використовувати, ви не хочете, щоб вони це робили! noesckeys також не прискорює роботу поза режимом вставки. ttimeoutlenОднозначно шлях
JonnyRaa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.