Vim escapa del valor no ASCII para pegar

Vim escapa del valor no ASCII para pegar

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( ^Wes el punto de código 23) pero son los llamadosindecentecaracteres. Puede pegarlos palabra por palabra en su ~/.vimrcarchivo (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 ^Jy ^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')

información relacionada