Estoy intentando pegar una cadena de un registro en VIM que contiene caracteres que no son ASCII como Ctrlr, ¿cómo puedo pegar esta cadena en un archivo, pero escapar de los caracteres que no son ASCII automáticamente?
Esencialmente, lo que intento lograr es grabar una macro que tenga algunos caracteres (no ASCII), como por ejemplo CtrlWcuál vim se mostrará como ^W. Quiero poder tomar la macro (examinando los registros y tomando la cadena de macro (es decir, @a=^W)) y copiándola en un archivo .vimrc como un mapa de teclas, de modo que cuando presione la tecla ejecutará esa macro.
Quiero hacer esto automáticamente (o lo más rápido posible) sin tener que cambiar ^W CtrlWen el archivo .vimrc, o donde también lo pegue.
Respuesta1
En primer lugar,secuencias de control están dentro del rango ASCII( ^W
es el punto de código 23) pero son los llamadosindecentecaracteres. Puede pegarlos palabra por palabra en su ~/.vimrc
archivo (siempre que use registros de Vim, y no selección y pegado de terminal);no es necesario escapar. (Es posible que solo haya problemas con ^J
y ^M
, según el formato de archivo de su archivo ~/.vimrc
.)
Dicho esto, aquí hay una sustitución simple que escapará de esas secuencias de control:
:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')