Wie kann ich in vim eine gültige Eingabe für "xxd -r" machen, wenn ich ein Byte entferne?

Erstelle eine Datei mit dem Namentest mit folgendem Inhalt:

0123456789abcdef0123456789abcdef

Ich möchte das erste @ entfern0 unter Verwendung von xxd. Öffne es mitvim -b test dann renne:%!xxd inside vim. Das Ergebnis ist

0000000: 3031 3233 3435 3637 3839 6162 6364 6566  0123456789abcdef
0000010: 3031 3233 3435 3637 3839 6162 6364 6566  0123456789abcdef
0000020: 0a                                       .      

Dann entferne ich den Hex-Code30 für das erste0:

0000000: 31 3233 3435 3637 3839 6162 6364 6566  0123456789abcdef
0000010: 3031 3233 3435 3637 3839 6162 6364 6566  0123456789abcdef
0000020: 0a                                       .

Dann laufe ich:%!xxd -r, um das Hex zurückzulesen. Das Ergebnis ist

^@23456789abcdef^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

Das Ergebnis ist verstümmelt. Ich weiß, dass der Grund für den oben genannten Inhalt keine gültige xxd-Eingabe ist. Wenn ich die Zeilennummern und den Textteil entferne:

31 3233 3435 3637 3839 6162 6364 6566
3031 3233 3435 3637 3839 6162 6364 6566  
0a  

Der ich renne:%!xxd -r -p, um das Hex zurückzulesen. Und das Ergebnis ist richtig:

123456789abcdef0123456789abcdef

Gibt es eine bessere Möglichkeit, diesen Job mit vim und xxd zu erledigen? Ein besserer Weg bedeutet weniger Bearbeitung, um eine gültige Eingabe für @ zu machexxd -r.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage