2009-05-05 10 views
89

相対的な対策について説明しましょう。私のVimは次のようになります。Vimでテキストをある長さに折り返すにはどうしたらいいですか?

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc 

私はそれが小さくなるしたいと思います:

aaaaa 
aaaaa 
bbbbb 
bbbbb 
ccccc 
ccccc 
etc 

私はそれを取得できますか?そのようなブロックの長さの設定はどのように管理できますか?

:%!fold -w5 

結果:(1)倍を使用して

+0

字下げテキストではなく、折り返しテキストを意味しますか? –

+0

lc:違いはわかりません。私はそれが私に推薦されたようにラップを書くつもりだったが、私はそれを働かせたことはない。 –

答えて

164

あなたが実際に二つのこと行うことができます。

  1. をvimの形式(すなわちみよう変更する)改行を挿入して短い行にする
  2. ままラインをそのまま、しかし表示は、彼らはあなたがしたいん

を包ん?

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

:set wrapまたは:set nowrapを実行すると、オプション2を切り替えることができます。

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

+30

+1を見ています。それはawsomely usefulです。 –

+23

段落の末尾に 'gq}'の書式も便利です。 –

+3

FYIこれは空白で区切られ、gqgqはtw = 5であっても質問に示されているような行をしません。 – dlamblin

21

が1つの可能性である

aaaaa 
aaaaa 
aaa 
bbbbb 
bbbbb 
bbb 
ccccc 
ccccc 
ccc 
+4

これは、 'fold'コマンドがインストールされていることを前提としています。 –

+1

これは折り畳みスペースも考慮していません。 – Lionel

+7

@Lionel:はい。スペースを尊重するには、オプション "-s"をfoldコマンドに追加します。 – sleske

14
:set textwidth=30 
+0

元のポスターの例のように、空白がない場合、textwidthはそれをどのように処理しますか?私は演劇を持っていたし、空白がある場合は(または、breakat変数が別のものに設定されていると仮定して)textwidthに基づいて書式を設定するように見えます。 – Andy

+3

@Andy 'textwidth'はスペースなしの状況を処理しません。これを行うために独自の 'formatexpr'関数を書くことができます。 –

+0

ありがとう、私は視覚モードからのgqキーコマンドのためにformatexpr – Andy

54

'textwidth'を設定したら、ビジュアルモードでテキストを選択し、gqを押して適切に折り返します(以前の/従来の設定ではQも使用できます)。

いくつかの便利なヒント:あなたは一定の長さで破断したいスペースなしでテキストを持っている場合は

gqgq (wrap the current line) 
gq} (wrap this 'paragraph', i.e. until the next blank line) 
:h gq 
+3

+1、私は誤ってvimでgqを叩いたが、最後の半時間を費やして私が何をヒットしたかを見てきた。これはとても便利です。 – user176121

+4

私は第2のコマンドは実際に 'gq}'であるべきだと思います。 – Martey

+0

私は最初のコマンドを 'gq $' – wil93

7

は、それが外部foldを使用したり、独自のformatexprを書くこともない必要があります。

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

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

+1

これは、OpenSSL証明書を復活させる間、私の日を節約しました。ありがとうございました –

関連する問題