web-dev-qa-db-ja.com

vim regexで印刷できない文字を置換または検索するにはどうすればよいですか?

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

38
Charles Ma

^ CをCに置き換えたいとします。

:%s/CtrlVC/C/g

どこ CtrlVC 押しながらVを押してからCを押すことを意味します Ctrl 押された。

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

37
ars

制御記号のみを削除:

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

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

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

これらの違いは、印刷できない非制御文字がある場合に見られます。 ゼロ幅スペース

enter image description here

69
lincz

Vimでファイルを保存した後、これを試してください(Linux環境にいると想定)

:%!tr -cd '[:print:]\n'
10
ticktock

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

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

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

6
Dalin

以下を使用できます。

:%s/^C//g

^Cを取得するには、Ctrlキーを押しながらVを押してからC(どちらもControlキーを押したまま)を押すと、^Cが表示されます。これにより、すべての出現箇所が検出され、何も置換されません。

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

:%s/^C\|^B//g
5
codaddict

CTRL-V 接頭辞を入力して入力するか、簡単に入力できない場合は、ヤンクして CTRL-R"

5
Pi Delport