У мене немає Mac для того, щоб перевірити цю відповідь, але я стикаюся з цією проблемою в XTerm під Linux, і дуже часто (припускаючи, що iTerm2 поважає ті самі контрольні коди), ви можете виявити, що наведене нижче виправлення є корисним.
Запустіть таку команду оболонки всередині терміналу, де ви бачите проблему:
printf "\e[?1004l"
(Зверніть увагу, що останній символ є маленьким 'ell'.)
Ця послідовність управління ANSI подібна до тієї, що вказана у відповіді Томаса Дікі, але вона вимикає функцію (а не вмикає). Це повинно вирішити вашу проблему у всіх програмах, а не лише у Vim, зупиняючи появу символів взагалі.
У Linux я можу продемонструвати цю контрольну послідовність, працюючи з наступними кроками:
- Запустіть
xterm
та увімкніть функцію, запустивши printf "\e[?1004h"
її.
- Запустіть
xeyes
або інший GUI-додаток із того самого XTerm . (Чомусь такий ефект у мене не відбувається, поки XTerm, про який йде мова, не запустить програму. Хтось знає, чому?)
- Неодноразово перемикайте фокус на вихідний вихідний XTerm (наприклад, натискаючи на вікно) і переглядайте
^[[O
та ^[[I
вводячись у "XTerm".
- Тепер закрийте Xeyes, поверніться до початкового XTerm та запустіть
printf "\e[?1004l"
(щоб вимкнути функцію, як описано у виправленому вище).
- Повторіть кроки " запустіть
xeyes
, перемкніть фокус " вище, але цього разу не бачите жодних символів у терміналі.
Я особисто бачу цю проблему лише в тому випадку, коли я ненавмисно скинув бінарний вихід у термінал, але якщо ви стикаєтесь з ним більш регулярно, можливо, ви захочете додати це printf
до інтерактивного сценарію запуску вашої оболонки (наприклад ~/.bashrc
). Не може бути шкоди (як мінімум під XTerm) надсилати контрольний код, якщо функція вже вимкнена, тому вона повинна бути безпечною, навіть якщо ви бачите цю проблему лише іноді.
Якщо ви стурбовані тим, що ваша оболонка завжди генерує цей висновок, можливо, тому, що ви іноді використовуєте його в місцях, які не добре обробляють ці контрольні коди, або якщо проблема інколи запускається після запуску оболонки, ви можете скористатися налаштуванням створити псевдонім (наприклад, з alias focusfix='printf "\e[?1004l"'
), щоб було зручніше керувати вручну.