Vim экранирует не-ASCII значение для вставки

Vim экранирует не-ASCII значение для вставки

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

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

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

решение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')

Связанный контент