web-dev-qa-db-ja.com

viで2つの行を結合するにはどうすればよいですか?

以下のようなテキストファイルに2行あります。

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

以下のようにviに2行を追加します。

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

2行目が削除され、2行目の内容が1行目に追加されました。

Viのコマンドモードを使用してどのように実行できますか?

160
Vijay

Shift+J 現在の行から行変更文字を削除します。そのため、行の任意の場所で「J」を押すと、現在の行と次の行を希望の方法で組み合わせることができます。

294
GJ.

ViまたはVim?

とにかく、次のコマンドは「互換性のない」モードのVimで機能します。つまり、ほぼ純粋なviです。

:join!

あなたが通常のコマンドの使用からそれをしたい場合

gJ

「gJ」を使用すると、空白を追加または削除せずに行をそのまま結合できます。

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

結果:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

「J」コマンドを使用すると、次のことができます。

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT

type>_IDの間のスペースに注意してください。

58
Maxim Kim

これはそれを行う必要があります:

J

21
samg

Viでは、J(それはshift-jです)または:joinはほとんどの場合、あなたが望むことをすべきです。 空白を調整することに注意してください。特に、多くの場合、2つの結合された行の間にスペースができます。

Vimでは、gJ(g、次にshift-j)または:join!も使用できます。これらは、空白調整を行わずに行を結合します。

Vimで、詳細については:help Jを参照してください。

15

\n」を「」に置き換えるだけです。

ドキュメント内のすべての行のvi/Vim:

%s/>\n_/>_/g

すべての交換を確認する場合:

%s/>\n_/>_/gc
4
Carsten C.

選択した行を結合したい場合(ビジュアルモード)、gJを押すだけで、スペースなしで行を結合できます。

これは vi/Vim Stack Exchangeサイト で詳細に説明されています。

3
Brad Parks

押す Shift + 4 ( "$")最初の行に、その後 Shift + j (「J」)。

ヘルプが必要な場合は、viに移動してから F1

1
ghostdog74

その行にカーソルを置かずに2行を結合する別の方法は次のとおりです。

:6,6s#\n##

ここで、6は別の行が結合される行番号です。行番号を表示するには、:set nuを使用します。

次の行を結合するカーソル上にある場合:

:s#\n##

どちらの場合も、gのような:s#\n##gは必要ありません。1行に\nが1つだけ存在するためです。

1
vusan

Vimでは、gJも使用できます。

ََ

1
joshy