54

^Cまたは^Bとして表示される印刷不可能な文字を含むファイルがあります。これらの文字を見つけて置き換えたいのですが、どうすればよいですか?

4

7 に答える 7

84

制御記号のみの削除:

:%s/[[:cntrl:]]//g

印刷不可能な文字の削除(〜8.1.1より前のバージョンでは、これにより非ASCII文字も削除されることに注意してください):

:%s/[^[:print:]]//g

ゼロ幅スペースなど、印刷不可能で制御不可能な文字がある場合は、これらの違いがわかります。

ここに画像の説明を入力してください

于 2013-04-21T19:43:41.917 に答える
48

^ CをCに置き換えたいとしましょう:

:%s/CtrlVC/C/g

ここでCtrlVC、はVを入力し、次にCをCtrl押したままにします。

CtrlV制御文字を入力できます。

于 2010-10-02T04:02:52.167 に答える
13

ファイルをvimに保存した後にこれを試してください(Linux環境にいると仮定します)

:%!tr -cd '[:print:]\n'
于 2012-02-14T13:47:06.733 に答える
9

ここでVimの制御文字を使用した答えはどれも私にはうまくいきませんでした。Unicode範囲を入力する必要がありました。

:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g

そのユニコード範囲は、この他の投稿で見つかりました:https ://stackoverflow.com/a/8171868/231914

于 2016-12-15T16:29:26.987 に答える
5

次を使用できます。

:%s/^C//g

コントロールキーを押したままにするには、次に(^Cコントロールキーを押しながら両方)を押すと、が表示されます。これにより、すべてのオカレンスが検出され、何も置き換えられません。VC^C

両方を削除するには^C、次の^Bようにします。

:%s/^C\|^B//g
于 2010-10-02T04:04:20.490 に答える
5

プレフィックスを使用しCTRL-Vて入力するか、簡単に入力できない場合は、ヤンクして挿入します。CTRL-R "

于 2010-10-02T04:04:25.870 に答える
4

他の回答に記載されていないオプション。

長い16進コードを含む特定のUnicode文字を削除します。例<200b>

:%s/\%U200b//g
于 2021-03-08T19:48:38.443 に答える