21

空白とコメント行を一度に削除したい。空白行の削除に関して同様の質問をすでに見つけたので、空白行には次を使用します。

:g/^$/d

コメント行の場合:

:g/^#/d

これらの正規表現を1つにマージする方法はありますか?何かのようなもの

:g/^[$#]/d

しかし、明らかにそれはvimでは機能しません。

4

5 に答える 5

29

次のコマンドを試すことができます。

:g/^\(#\|$\)/d

または

:g/\v^(#|$)/d

  • $[...]内のリテラル「$」に一致:help /$します(ヘルプの入力)
  • \|交替用です
  • \v非常に魔法です(最小限のバックスラッシュエスケープ)
于 2012-09-30T15:56:10.793 に答える
5

これを解決する別の方法は、コメントされていない行を保持することです。

:g!/^[^#]/d

于 2012-09-30T18:32:09.053 に答える
4

正規表現パターンを「または」演算子と組み合わせることができます\|。例:

:g/^\(#.*\|$\)/d

ただし、この特定のケースでは、実際にはそれ#.*をオプションとして指定する必要があります。例:

:g/^\(#.*\)\?$/d

最後に、ほとんどのコマンドをVIM(正規表現ではない)の「パイプ」演算子でチェーンできることに注意してください|。たとえば、次のようになります。

:g /^#/d | /^$/d
于 2012-09-30T15:58:42.393 に答える
3

次のことを試してください:

:g/^$/d | /^#/d

|同時にマルチコマンドを組み合わせるためにあります。

于 2012-09-30T15:58:07.897 に答える
3

kevsの回答を拡張する:
タブ付きの構成ファイルのコメントも削除したい場合は、次のようになります

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;
    ...

あなたはこれを試すことができます:

:g/\v^(#|$|\t#)/d
于 2017-11-14T11:12:27.413 に答える