Я пытаюсь вставить строку из регистра в VIM, которая содержит не-ASCII-символы, такие как Ctrl- r. Как вставить эту строку в файл, но автоматически экранировать не-ASCII-символы?

По сути, я пытаюсь добиться записи макроса, содержащего некоторые (не ascii) символы, такие как Ctrl W, который vim будет отображать как ^ W. Я хочу иметь возможность взять макрос (изучив регистры и взяв строку макроса (т.е. @ a = ^ W)) и скопировав его в файл .vimrc в качестве карты ключей, чтобы при нажатии клавиши он запустит этот макрос.

Я хочу сделать это автоматически (или как можно быстрее), не меняя ^ W на Ctrl W в файле .vimrc, или куда бы я ни вставлял.

1 ответ1

1

Прежде всего, управляющие последовательности находятся в диапазоне ASCII (^W - это кодовая точка 23), но это так называемые непечатные символы. Вы можете вставить эти дословно в ваш файл ~/.vimrc (если вы используете регистры Vim, а не выбор терминала и вставку); побег не требуется. (Могут быть проблемы только с ^J и ^M , в зависимости от формата файла вашего ~/.vimrc .)

Тем не менее, вот простая замена, которая избежит этих последовательностей управления:

:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .