Цифровые клавиши клавиатуры в vi вставляют буквы вместо цифр

8

Я новичок в vi. На самом деле я использую его только для изменения небольших текстовых файлов. Я думаю, что у меня серьезная и необычная проблема с цифровой клавиатурой: я пишу vi INи нажимаю ввод. Это дает мне доступ к файлу с именем IN. Затем я использую клавиши со стрелками (или hjkl) для перемещения курсора по файлу. Затем я нажимаю, iчтобы активировать insert modeи писать. Здесь возникает проблема: цифровая клавиатура не работает должным образом, так как я получаю, pqrstuvwxylкогда я нажимаю 0123456789+( ,.-*/=все еще работает).

Энрико Мария Де Анжелис
источник
1
Почему мой вопрос перенесен сюда? Проблема была не в Mac, а в Vi. На самом деле, как я уже сказал, цифровая клавиатура не работает только в Vi . Наоборот, он всегда работал в терминале или в других приложениях.
Энрико Мария Де Анжелис

Ответы:

8

Насколько я понимаю, есть два возможных режима для числа клавиатур на терминалах VT100: нормальный режим цифровой клавиатуры и режим клавиатуры Application . Последний имеет клавиши клавиатуры для отправки не цифры, а escape-последовательности. Например, клавиша «1» отправляет <ESC>[Oq, клавиша «2» отправляет <ESC>[Or, из которых на экране видны только буквы q и r . Это управляющие последовательности, которые программа (хост) может интерпретировать как команды для некоторых функций. Таким образом, в этом режиме клавиши клавиатуры практически используются в качестве дополнительных функциональных клавиш.

В соответствии со стандартом терминала VT100 программа (хост) может «попросить» терминал переключить клавиатуру в режим приложения. (Это может быть сделано путем отправки определенной последовательности управления на терминал.) Известно, что Vi и Vim делают это. Переключатель режимов не универсален, он зависит от программы к программе: он активен только в той программе, которая его запросила. В других программах, включая оболочку, клавиатура остается в числовом режиме. Настройка по умолчанию в Terminal.app в OS X - разрешить программам переключаться в режим приложения, который вы сейчас отключили, сняв флажок «Разрешить режим клавиатуры приложения VT100». (Кстати: в OS X 10.7 эта опция помечена как «Строгое поведение клавиатуры VT100».)

Смотрите также:

http://www.vt100.net/docs/vt100-ug/chapter3.html https://ttssh2.osdn.jp/manual/en/usage/tips/appkeypad.html

Словари Аноним
источник
Может быть, я не понял, что ты написал. Когда я в терминале, клавиатура работает хорошо (вставляет цифры). «Странное» поведение происходило только в режиме вставки Vi.
Энрико Мария Де Анжелис
1
Переключатель режима активен только в программе, которая его запросила (в данном случае: vi). Таким образом, клавиатура работает нормально в других программах, включая оболочку. Я добавил это уточнение в ответ.
Анонимный словарь
9

Я решил проблему самостоятельно, но хотел бы знать, ПОЧЕМУ мое решение работает. Я отменил выбор опции, которую красная стрелка показывает на следующей картинке. войти Это итальянский, но английская версия того же окна здесь

Но я не помню, чтобы это было включено, но это так.

Энрико Мария Де Анжелис
источник
Редактирование вводит в заблуждение. Ложно, что « я не помню, чтобы я это включил »; напротив, я уверен, что никогда не включал его в этом окне !
Энрико Мария Де Анжелис
Кроме того, была часть, в которой я попросил кого-то сказать мне, почему этот вариант имел такое последствие, если есть другие последствия, и если возможно, что я включил его из-за побочного эффекта опечатки.
Энрико Мария Де Анжелис
AFAIK опция включена по умолчанию (по крайней мере, она включена и на моем Mac, и я совершенно уверен, что сам не умышленно включал ее). Что касается вашего второго комментария: см. Примечание в истории изменений относительно последующих вопросов, скрытых в ответах.
nohillside
1
Ссылка в том, что я всегда использовал цифровую клавиатуру для вставки чисел в Vi. В любом случае, возможно, эта опция могла быть активирована при обновлении с Йосемити до Эль-Капитана (все же я уверен, что я использовал цифровую клавиатуру, чтобы вставить цифры после обновления).
Энрико Мария Де Анжелис
1
Он был включен по умолчанию. Начиная с OS X 10.11 El Capitan, он выключен по умолчанию. Vim включает режим клавиатуры приложения (DECKPAM) без предоставления сопоставлений по умолчанию. Я не смог выяснить, почему Vim делает это. Я думаю, что он должен либо предоставлять сопоставления по умолчанию, либо не включать DECKPAM по умолчанию.
Крис Пейдж