Я пытаюсь вставить строку из регистра в 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')