ファイル内のすべての行を1行に結合したい。これを行う最も簡単な方法は何ですか?置換を使用しようとしてうまくいかなかった(\r\n
または\n
は、Windowsのs/\r\n//
の場合、正しく取得されないようです)。範囲式でJ
を使用しても動作しないようです(おそらく、最初のコマンドが実行された後、範囲が 'sync'にないためです)。
私は:1,$norm! J
を試しましたが、これはファイルの半分しか行いませんでした。これは、各行を1回結合するだけなので理にかなっています。
ああ、私は答えを見つけました。
:1,$join
魅力のように機能します。
[〜#〜] edit [〜#〜]:コメントで指摘したとおり:
:%join -or- :%j
...範囲を削除します。
別の方法:
ggVGJ
「ggVG
」は視覚的にすべての行を選択し、「J
」はそれらを結合します。
通常モードから3つのキーストロークで開始できます。
:%j
:
コマンドモードに入ります%
は、ファイル内のすべての行を参照しますj
はjoinコマンドを実行しますこれで行間にスペースが追加されたようです。これが必要かどうかはわかりません。
次の3つの少ないキーストロークで実行できます。
:1,$j
エドはグランドではありませんか?
不可解な方法:
qqqqqJ@qq@q
(最初の3つのq
はq
レジスタをクリアし、qqJ@qq
は、結合を実行するq
レジスタにマクロを記録してから、q
を呼び出し、最後の@q
実行します。
逆の言い方をした人もいないことに驚きます。
:%s/\n/ /
同様に、範囲1,$
は%
。
(これは行を結合することと同じことを行いませんが、実際にはより適切であるかもしれない状況によっては異なります。)