708

Vimで空白行を削除するには、どのコマンドを実行できますか?

4

14 に答える 14

1309
:g/^$/d

:g正規表現に一致する行でコマンドを実行します。正規表現は「空白行」で、コマンドは:d(削除)です

于 2009-04-01T15:36:32.220 に答える
195

見つけた、それは:

g/^\s*$/d

出典: vim wikiaのgの力

の簡単な説明:g

:[range]g/pattern/cmd

これは、パターンに一致する各行に対してEx コマンドcmdを実行することにより、指定された[範囲] (デフォルトではファイル全体)に対して作用します(Ex コマンドは、deleteなどのコロンで始まるコマンドです)。cmdを実行する前に、" " は現在の行に設定されます。:d.

于 2009-04-01T15:35:46.590 に答える
55
:v/./d

また

:g/^$/d

また

:%!cat -s
于 2009-04-01T15:36:42.250 に答える
46

以下を使用して、複数の空白行のみを削除し (単一の空白行に減らし)、単一の空白行をそのまま残すことができます。

:g/^\_$\n\_^$/d
于 2009-04-07T14:52:09.697 に答える
15
  1. すべての空白行を削除する方法

    :%s,\n\n,^M,g
    

    (これを複数回実行すると、すべての空の行がなくなります)

  2. SINGLE空行を残してすべての空白行を削除する方法

    :%s,\n\n\n,^M^M,g
    

    (これを複数回行う)

  3. 最大で2つの空の行を残してすべての空白行を削除する方法、

    :%s,\n\n\n\n,^M^M^M,g
    

    (これを複数回行う)

^M を入力するには、windows で control-Q と control-M を使用する必要があります

于 2012-10-26T07:12:54.980 に答える
6

どうですか:

:g/^[ \t]*$/d
于 2009-04-01T15:38:21.000 に答える
5

vimでperlを操作する:

:%!perl -pi -e s/^\s*$//g

于 2012-05-01T13:17:18.503 に答える
5

この関数は、2 つ以上の空白行のみを削除し、以下の行を vimrc に入れ、\d を使用して関数を呼び出します

fun! DelBlank()
   let _s=@/
   let l = line(".")
   let c = col(".")
   :g/^\n\{2,}/d
   let @/=_s
   call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>
于 2012-05-01T20:10:55.710 に答える
4
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line

ペースト

:command -range=% DBL :<line1>,<line2>g/^\s*$/d

.vimrc で、vim を再起動します。コマンド :5,12DBL を使用すると、5 行目から 12 行目までの空白行がすべて削除されます。私の回答がベストアンサーだと思います!

于 2014-04-30T06:56:19.700 に答える
4

このページのいくつかの回答を試しましたが、多くの回答がうまくいきませんでした。たぶん、私が Windows 7 で Vim を使用しているからでしょう (嘲笑しないでください。私に同情してください:p)?

Windows 7 の Vim で動作する、私が見つけた最も簡単なものを次に示します。

:v/\S/d

Vim Wikia に関するより長い回答は次のとおりです。http://vim.wikia.com/wiki/Remove_unwanted_empty_lines

于 2014-04-07T16:26:14.210 に答える
2

テキストに二重の行間が含まれている場合、このコマンドは二重の間隔を削除し、既存の繰り返し空白行を単一の空白行にマージします。行の先頭に ^^^ の一時的な区切り文字を使用するため、これがコンテンツと衝突する場合は別のものを選択してください。空白のみを含む行は空白として扱われます。

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
于 2014-08-01T06:48:33.080 に答える
1

これは私のために働いた:

:%s/^[^a-zA-Z0-9]$\n//ig

基本的に、数字や文字を含まないすべての行を削除します。リスト内のすべてのアイテムに文字が含まれていたため、すべての空白行が削除されました。

于 2014-01-03T23:32:33.763 に答える