Ich benutze häufig Programmierpuzzles und Code-Golf . Viele Benutzer dort haben benutzerdefinierte Sprachen nur zum Golfen geschrieben. Ich arbeite gerade alleine. Viele dieser Sprachen haben ihre eigenen benutzerdefinierten Codierungen, sodass sie mehr Befehle in ein einzelnes Byte zerlegen können. Zum Beispiel im Ernst , Gelee und 05AB1E .
Kann ich vim so konfigurieren, dass meine eigene benutzerdefinierte Codierung verwendet wird? Ich möchte eine Zuordnung von Bytes zu Unicode-Codepunkten konfigurieren. Zum Beispiel:
0x01 == "¢"
Wenn ich dann tippe <C-v><C-a>
, wird ein ¢
Zeichen angezeigt , und wenn ich schreibe, wird das Byte gespeichert 0x01
.
Ist das überhaupt aus der Ferne möglich? Und würde dies auch gut mit der System-Zwischenablage funktionieren? (zB kann ich von meinem Browser nach vim kopieren und einfügen und umgekehrt)
:help conceal
.encoding
undcharconvert
ich sah, dass es intern versucht, dieiconv
Funktion zuerst zum Konvertieren von Zeichensätzen zu verwenden.iconv
kann die Konvertierung zwischen verschiedenen Zeichensätzen verarbeiten. Eine Antwort zum Hinzufügen eines Zeichensatzesiconv
finden Sie hier (anscheinend müssen Sie dem Betreuer eine E-Mail senden). Vielleicht hilft dir das. :)Antworten:
Wie von romainl vorgeschlagen, können Sie dies mit der
conceal
Funktion von vim erreichen.Hier ist ein Skriptbeispiel, das verwendet werden kann:
Wie Sie sehen können, habe ich einige der Kartierungen und Ihr
^A
Beispiel ernst genommen . Vorsicht, wenn Sie diesen Code kopieren / einfügen möchten,^A
muss der eingegeben werden<C-v>
<C-A>
.Dieser Code definiert für jedes
value
/display
Paar eine Syntaxübereinstimmung.z.B
Stimmt mit jeder
08
Sequenz und der Datei überein und verbirgt sie mit dem◘
Charakter.Sie werden sehen
◘
, aber der eigentliche Text in der Datei ist08
.Sie können dann eine Liste von Regeln nehmen und (mit einem ausgefallenen Makro, dh für ernst
0i\ ['^[f s', '^[lxf)s'],^[ld$
:) jede Zeile in ein verwendbares vim-Array umwandeln.Wenn Sie Literal-Unicode mit vim eingeben möchten, können Sie diesen Workflow verwenden:
Wo
XXXX
ist der Unicode - Wert, so Typisierung<C-V>u0001
fügt^A
nach Wunsch.Wenn Sie den Inhalt der Datei überprüfen möchten, empfehle ich die Verwendung eines Hex-Dumps der Datei, den Sie mit xxd haben können .
z.B
Sie können hier Ihr
^A
As01
und Ihr^B
As sehen02
. (0a
repräsentiert die neue Zeile am Ende der Datei)quelle