Vim escapando de valor não-ascii para colar

Vim escapando de valor não-ascii para colar

Estou tentando colar uma string de um registro no VIM que contém caracteres não ASCII, como Ctrlr, como posso colar essa string em um arquivo, mas escapar dos caracteres não ASCII automaticamente?

Essencialmente, o que estou tentando alcançar é gravar uma macro que possui alguns caracteres (não-ascii), como CtrlWqual vim será exibido como ^W. Quero ser capaz de pegar a macro (examinando os registros e pegando a string da macro (ou seja, @a=^W)) e copiando-a para um arquivo .vimrc como um mapa de teclas, para que quando eu pressionar a tecla ela irá executar essa macro.

Quero fazer isso automaticamente (ou o mais rápido possível) sem precisar alterar ^W para CtrlWo arquivo .vimrc ou onde quer que eu o cole.

Responder1

Em primeiro lugar,sequências de controle estão dentro da faixa ASCII( ^Wé o ponto de código 23), mas eles são chamadosimprimívelpersonagens. Você pode colá-los literalmente em seu ~/.vimrcarquivo (desde que use registros Vim, e não seleção e colagem de terminal);nenhuma fuga é necessária. (Pode haver problemas apenas com ^Je ^M, dependendo do formato de arquivo do seu ~/.vimrc.)

Dito isto, aqui está uma substituição simples que escapará dessas sequências de controle:

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

informação relacionada