^Cまたは^Bとして表示される印刷不可能な文字を含むファイルがあります。これらの文字を見つけて置き換えたいのですが、どうすればよいですか?
7 に答える
制御記号のみの削除:
:%s/[[:cntrl:]]//g
印刷不可能な文字の削除(〜8.1.1より前のバージョンでは、これにより非ASCII文字も削除されることに注意してください):
:%s/[^[:print:]]//g
ゼロ幅スペースなど、印刷不可能で制御不可能な文字がある場合は、これらの違いがわかります。
^ CをCに置き換えたいとしましょう:
:%s/CtrlVC/C/g
ここでCtrlVC、はVを入力し、次にCをCtrl押したままにします。
CtrlV制御文字を入力できます。
ファイルをvimに保存した後にこれを試してください(Linux環境にいると仮定します)
:%!tr -cd '[:print:]\n'
ここでVimの制御文字を使用した答えはどれも私にはうまくいきませんでした。Unicode範囲を入力する必要がありました。
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
そのユニコード範囲は、この他の投稿で見つかりました:https ://stackoverflow.com/a/8171868/231914
次を使用できます。
:%s/^C//g
コントロールキーを押したままにするには、次に(^C
コントロールキーを押しながら両方)を押すと、が表示されます。これにより、すべてのオカレンスが検出され、何も置き換えられません。V
C
^C
両方を削除するには^C
、次の^B
ようにします。
:%s/^C\|^B//g
他の回答に記載されていないオプション。
長い16進コードを含む特定のUnicode文字を削除します。例<200b>
:
:%s/\%U200b//g