web-dev-qa-db-ja.com

Vimで、ファイル内のすべての行を1行に結合する最も簡単な方法は何ですか?

ファイル内のすべての行を1行に結合したい。これを行う最も簡単な方法は何ですか?置換を使用しようとしてうまくいかなかった(\r\nまたは\nは、Windowsのs/\r\n//の場合、正しく取得されないようです)。範囲式でJを使用しても動作しないようです(おそらく、最初のコマンドが実行された後、範囲が 'sync'にないためです)。

私は:1,$norm! Jを試しましたが、これはファイルの半分しか行いませんでした。これは、各行を1回結合するだけなので理にかなっています。

55
Jordan Parmer

ああ、私は答えを見つけました。

:1,$join

魅力のように機能します。

[〜#〜] edit [〜#〜]:コメントで指摘したとおり:

:%join   -or-    :%j

...範囲を削除します。

62
Jordan Parmer

別の方法:

ggVGJ

ggVG」は視覚的にすべての行を選択し、「J」はそれらを結合します。

130
orip

通常モードから3つのキーストロークで開始できます。

:%j
  • :コマンドモードに入ります
  • %は、ファイル内のすべての行を参照します
  • jはjoinコマンドを実行します

これで行間にスペースが追加されたようです。これが必要かどうかはわかりません。

32
Dimi

次の3つの少ないキーストロークで実行できます。

:1,$j

エドはグランドではありませんか?

15
tpgould

不可解な方法:

qqqqqJ@qq@q

(最初の3つのqqレジスタをクリアし、qqJ@qqは、結合を実行するqレジスタにマクロを記録してから、qを呼び出し、最後の@q実行します。

9
Josh Lee

逆の言い方をした人もいないことに驚きます。

:%s/\n/ /

同様に、範囲1,$%

(これは行を結合することと同じことを行いませんが、実際にはより適切であるかもしれない状況によっては異なります。)

8