Vim escapando do valor não-ascii para colar

0

Eu estou tentando colar uma string de um registro no VIM que contém caracteres não-ASCII como Ctrl r , como posso colar essa string em um arquivo, mas escapar os caracteres não-ASCII automaticamente?

Essencialmente, o que eu estou tentando alcançar é gravar uma macro que tem alguns caracteres (não ascii), como Ctrl W , que o vim mostrará como ^ W . Eu quero ser capaz de pegar a macro (examinando os registradores e pegando a string de macro (ou seja, @ a = ^ W)) e copiando-a para um arquivo .vimrc como um mapa-chave, para que quando eu pressionar a tecla irá executar essa macro.

Eu quero fazer isso automaticamente (ou o mais rápido possível) sem ter que alterar ^ W para Ctrl W no arquivo .vimrc, ou onde quer que eu o cole também.

    
por user2840647 04.12.2013 / 05:09

1 resposta

1

Em primeiro lugar, seqüências de controle estão dentro do intervalo ASCII ( ^W é o ponto de código 23), mas elas são chamadas de não imprimíveis caracteres. Você pode colar essas texturas no seu arquivo ~/.vimrc (contanto que você use os registros Vim, e não a seleção e colagem do terminal); não é necessário escapar . (Pode haver apenas problemas com ^J e ^M , dependendo do formato de arquivo de seu ~/.vimrc .)

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

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