3

(検索後)特定の列の間の1行で、一致しないすべての文字を置き換えようとしています。

:
検索はすべて可能です 検索
下の例では、test
一致しない文字の置換文字: 空白。

列 10 と 30 の間testの " "の一部ではないすべての文字を置き換えたい。 10 列目と 30 列目は
|

before:  djd<aj.testjal.kjetestjaja testlala ratesttsuvtesta !<-a-
                  |                   |   
after:   djd<aj.test       test     testlala ratesttsuvtesta !<-a-

どうすればこれを理解できますか?

4

2 に答える 2

3

その行で次の置換コマンドを使用します。

:s/\(test\)\zs\|\%>9v\%<31v./\=submatch(1)!=''?'':' '/g

視覚的な選択を使用して列の範囲が指定されている場合は、実行します

:'<,'>s/\(test\)\zs\|\%V./\=submatch(1)!=''?'':' '/g
于 2012-04-11T07:43:32.360 に答える
1

1 つの方法は、ビジュアル モード (control+v) を使用して適切な列範囲を選択することです。

選択したら、検索と置換を使用して実行できます (この質問を参照してください)

 %s/\%Vfoo/bar/g

テストしないための正規表現はここにあります:単語を含まない行に一致する正規表現?

于 2012-04-10T13:02:09.553 に答える