web-dev-qa-db-ja.com

Vimでテキストをある程度の長さに折り返すにはどうすればよいですか?

相対的な測定について話しましょう。私のVimは次のようになります。

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

もっと小さくしたい:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

どうすれば入手できますか?そして、そのようなブロックの長さの設定をどのように管理できますか?

実際には2つのことができます。

  1. 改行を挿入して、vim形式(つまり、変更)でテキストを短くします。
  2. 行はそのままにしますが、display行を折り返します

どちらがいいですか?

オプション1は、textwidth(たとえば、:set textwidth=30(Swaaropの回答による))を設定することで実現できます。次に、テキストを強調表示して(ビジュアルモードで)、gqと入力することにより、テキストを再フォーマットできます。 (textwidthtwと省略できます。したがって、:set tw=30です。)

オプション2は、:set wrap/:set nowrapを実行して切り替えることができます。これは、ウィンドウには長すぎる行を折り返します。

両方とも独立しています。

175
sleske

「textwidth」を設定したら、ビジュアルモードでテキストを選択し、gqを押してうまく折り返すことができます(一部の古い/レガシー構成でもQを使用できます)。

いくつかの便利なヒント:

gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq
60
Vlad Dogaru

Fold(1)の使用は1つの可能性です。

:%!fold -w5 

結果:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc
21
Fritz G. Mehner
:set textwidth=30
14
Swaroop C H

特定の長さで分割したいスペースのないテキストがある場合、外部foldを使用したり、独自のformatexprを記述する必要はありません。

:%s/\(.\{80\}\)/\1\r/g

80文字ですべての行を分割します。

8
kthy