4

gq長い行に貼り付けると、それが機能しないことに気づきました。たとえば、aと、を使用するtextwidth=72formatoptions=tcroqbnl、gqはこれをラップすることを拒否します(挿入モードでは、ラベルの内容全体を貼り付けてから、挿入モードを終了しますESC):

<label for="contact_reason_1">To get assistance with or to confirm a tire replacement recommendation</label>

(たとえば、「to」の後に)改行を追加すると、改行されます。面白いのは、私がラインを元に戻すと、それが再び幸せにラップされることです。だからVIMはどういうわけか「ああ、これは1つのペーストです、それを包まないでください」を覚えているようです。

その機能をオフにするにはどうすればよいですか?コマンドモードのgqを常に機能させたいのですが。をl取り出すことはformatoptions役に立たなかったようです(そして、そうすべきではありません、これは挿入モードではありません)。


明確化

はい、特にモーションコマンドを使用していgq<Right>ます。formatexprformatprog両方が設定されていません。重要な場合、これはDebian GNU / Linuxのgvim、vimバージョン7.2p284にあります。

再現する手順

  1. 開いているファイルにgvimをポップアップします。
  2. を押しiて挿入モードに入り、次のように入力しますThis is a long line. A long line. But not wrappable yet. Or yet. Soon.
  3. を押しESCてから、を押しIます。メモを入力Now putting text in front of the long line. してください:最後の期間の後にスペースがあり、このメモがここにある場合を除いて、SOにそれを表示させることはできません。楽しい。
  4. を押しESCてから、を押しAます。注を入力してください:そして、同じSO問題の前のスペースAnd some after.
  5. ESC最後にもう一度押します。今試してみてくださいgq<Left>、それはラップするだけであることに注意してくださいAnd some after.; 残りの行をvimで折り返すことはできません(挿入モードに入り、手動で改行を行わないと、機能します)。

この状態を修正することは実行可能です。「now」の後に改行を入れてからundoを押すと、行の折り返しが再び機能します。WTF。

4

2 に答える 2

8

gqテキストをラップするのに十分ではありません。ラップするモーションを指定するgqjか ( など)、現在の行を でラップするように指示する必要がありgqqます。ただの打ち間違いではないですか?

そうでない場合、formatexprおよびformatprgオプションは何に設定されていますか?

更新
問題は の b 設定ですformatoptions。これは、最後の挿入時に追加されたテキストのみをラップするように Vim に指示しています。

于 2009-12-09T13:59:18.403 に答える
1

gq を実行する前に行を選択すると、正常に動作することがわかりました。gq を何らかのテキスト選択操作と組み合わせて動作させたくないですか?

アップデート

バグを確認しました。vim -u NONE を実行していformatoptionsますvt

おそらく、Bram Molenar か、少なくとも vim コミュニティは興味を持っているでしょうか?

于 2009-12-09T14:02:22.600 に答える