36

Vim でテキストをアンラップしたい。行を結合すると、文間に追加のスペースができます。

何故ですか?

4

5 に答える 5

58

私はこれがあなたが本当に望んでいるものだと感じています:gJ

から:h gJ:

gJ          Join [count] lines, with a minimum of two lines.
            Don't insert or remove any spaces.  {not in Vi}

これは、ターミナルから何かをコピーし、それを 1 行ではなく大きな長方形のブロックとして vim に貼り付けた場合に便利です。

通常はビジュアルモードで使用します。ハイライトのもの、gJ.

于 2012-09-17T20:47:38.090 に答える
33

フォーマットは情報を破壊します。一度フォーマットすると同じものになるテキストの多くの異なるブロックがあります。したがって、事前の知識なしに操作を元に戻す (つまり、元に戻す) 方法はありません。

未フォーマット:

Unformatted text could start out as either all one line, or several, yet look the same when formatted.

Unformatted text could start out as either all one line, or several, 
yet look the same when formatted.

フォーマット:

Unformatted text could start out as 
either all one line, or several, 
yet look the same when formatted.

段落をすべて 1 行にまとめたい場合、または少し手動で操作しても問題ない場合は、 を使用Jして行を結合することができます。ビジュアル モードを使用Jして、一度に複数の行にコマンドを適用できます。たとえば、段落と組み合わせapたりip、段落を選択したりできますvipJ。繰り返しますが、それでも一部の情報は失われます。書式設定前の改行での複数のスペースは、1 つのスペースに折りたたまれてしまいます。gJ(代わりに を使用してスペースを変更せずに実際に参加することはできJますが、フォーマットしたときに既に失われています)

文の後の余分なスペース (!、?、または . で終わる行) が気になる場合は、joinspaces をオフにします。set nojoinspaces

于 2009-10-16T16:04:33.550 に答える
6

これは私にとってうまくいった答えです。私のユースケースでは上記のどれもうまくいきませんでした。

基本的に、他の複数の人が言ったように gJ を使用しますが、すべてのファイルを強調表示するため、コマンドモードでggVGgJ.

于 2013-03-20T19:20:10.913 に答える
1

作業中の行がスペースで終わっていない場合、結合後に余分なスペースが1つ残っています。通常、これは望ましい動作です。例

first line without space
second line

との合流後J、なる

first line without space second line

場合によっては適用したくない場合もありますが、

myInstance->methodA()
          ->methodB()

myInstance->methodA()->methodB()そして、間にスペースを入れずに結合したいと思います!

ここで私が使用するヘルパーマッピング

nmap <leader>jj Jx

<leader> キーは で確認できます。:let mapleaderデフォルトはキー\だと思います。

したがって、通常モードでは、\jj余分なスペースなしで結合を実行するだけです!

于 2015-07-08T18:34:49.260 に答える