web-dev-qa-db-ja.com

16進コードで検索するにはvimを使用します

ファイルをクリーンアップする必要があります。ファイルでエスケープ文字(0x1B)が原因で失敗するxmlパーサーが実行されています。 vimを使用してファイル内のその文字がどこにあるかを検索して削除するにはどうすればよいですか?

ファイルの例:

<?php
echo "Hello, world.\n";                           
?>

変換後:

0000000: 0a3c 3f70 6870 0a65 6368 6f20 2248 656c  .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f  lo, world.\n";.?
0000020: 3e0a  

だから私は文字を削除します:(この例では、 'H')

0000000: 0a3c 3f70 6870 0a65 6368 6f20 22 656c  .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f  lo, world.\n";.?
0000020: 3e0a

最初の行の幅が十分ではなくなっていることに注意してください。元に戻すと、次のようになります。

^@<?php
echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@> 
44
David Oneill

検索(例: /) ために \%x1b

制御文字(エスケープを含む)をコマンドラインに入力することもできます。 Ctrl-V。だからタイプ /、 Ctrl-V、 Esc、 Enter

59
Nefrubyr

[escape] :%!xxdを実行して、vimを16進エディターに変換します。次に、0x1B(/1B)を検索します。

11

カーソルを置いてgaを押すと、文字の16進数の値がわかります。

以下に、文字の16進値が表示されます。 <╬>文字の例

<╬> <| N> 206、Hex ce、Oct 316、Digr I>

削除してください:

%s/\%xce//g 
1
Dani Konoplya