2012-03-18 11 views
3

私はこの問題にかなり直面しています。たとえば。効率的な方法でVimの2文字間のスペースを削除する

XYZW

幅xのy Z bはC dがABCD

は、今は、単一の文字の間にスペースを削除しなければなりません。行には前方にもいくつかの文字があります。

私はこのようなものを試してみたいです:s/[a-z] [a-z]/[a-z] [a-z]/g - 表現を置き換えることはできますか?

これは単なる問題の例です。私は同様の問題に直面しています。これらのタイプの式を見つけて式に置​​き換えて検索する必要がありますが、それらの式を完全に置き換えずに部分を置き換えるだけで済むような時間がたくさんあります。

編集:単一の文字の間の単一のスペースを削除したいですか?

+0

文字間または*単一文字*間の*単一スペース*を削除しますか? –

+0

1文字間のスペースのみを削除したいですか?そして、単一の文字と単語、言葉と言葉の間ではありませんか? – Rook

答えて

7

は、サブストリングのコレクションで正規表現を使用して:

s/\([a-z]\) \([a-z]\)/\1\2/g 

\ 1は、第\(...\)間の正規表現にマッチした文字を参照して、第二の間の正規表現にマッチ\ 2文字\(...\)

+0

それはまさに私が必要としていたものです。ありがとう。 – Anuj

+0

ちょうど知識のために、これらの\ 1 \ 2の使用は何と呼ばれますか? – Anuj

+1

'\(... \)'の間のものは部分式です。\ 1や\ 2はしばしば逆参照や時には参照と呼ばれます。 mit.edu/gnu/doc/html/ed_4.htmlたとえば、 – gbulmer

1

ありがとうございました。私も同様の問題がありました。行のすべての数字からすべての空白を削除したいが、空白は他の場所に残しておきたい。

%s/\\([0-9]\\) \\([0-9]\\)/\1\2/g 

でした。

関連する問題