Vim che sfugge al valore non ASCII per incollare


0

Sto cercando di incollare una stringa da un registro in VIM che contiene caratteri non ASCII come Ctrlr, come posso incollare questa stringa in un file, ma sfuggire automaticamente ai caratteri non ASCII?

In sostanza, quello che sto cercando di ottenere è la registrazione di una macro che ha alcuni caratteri (non ascii), come ad esempio CtrlWche vim mostrerà come ^ W. Voglio essere in grado di prendere la macro (esaminando i registri e prendendo la stringa di macro (cioè @ a = ^ W)) e copiandola in un file .vimrc come mappa-chiave, in modo che quando premo il tasto eseguirà quella macro.

Voglio farlo automaticamente (o il più velocemente possibile) senza dover cambiare ^ W CtrlWnel file .vimrc o ovunque lo incolli.


Duplicato di unix.stackexchange.com/questions/103567/… ; per favore non pubblicare in parallelo a più siti di scambio di stack!
Ingo Karkat,

Risposte:


1

Prima di tutto, le sequenze di controllo rientrano nell'intervallo ASCII ( ^Wè il punto di codice 23) ma sono i cosiddetti caratteri non stampabili . È possibile incollare questi termini nel ~/.vimrcfile (purché si utilizzino i registri Vim e non la selezione e l'incollaggio del terminale); non è necessario scappare . (Potrebbero esserci solo problemi con ^Je ^M, a seconda del formato file del tuo ~/.vimrc.)

Detto questo, ecco una semplice sostituzione che sfuggirà a quelle sequenze di controllo:

:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.