`gq`が折り返す列を設定しますか?


9

デフォルトでgqは、移動コマンドで使用すると、移動コマンドで記述されたテキストが79列にハードラップされます。(私はvi/に比較的慣れてvimいないため、正しい用語がわかりません。)その列数を構成して、代わりに異なる数の列で折り返すことができますか?

たとえば、次のテキストがあるとします。

This is text for illustration.

折り返し列を29に構成して、カーソルが行内にあり、実行gqipすると、次のように変換できるようにしたいと思います。

This is text for
illustration.

Ubuntu GNOME 17.04でgVimを使用しています(違いがある場合)。


編集:私は制限を超えても大丈夫な場合があるため、他の部分に影響を与えずに、テキストの特定のセクションを指定された行の長さに手動でラップする方法を探しています。前の例を拡張すると、ドキュメントが次のようになっているとします。

This is text for illustration.

This is some other text for illustration.

そしてgqip、最初の行にカーソルを置いて実行します。

This is text for
illustration.

This is some other text for illustration.

次に、その下の新しい行に入力を開始した場合、その行が同様に制限の影響を受けないようにします。

私のユースケースはLaTeX文書を書くことです:散文の段落をオンデマンドで特定の数の列にラップできるようにしたいのですが、長い方程式やテーブルを書いている特定のケースでは、それらの行に制限より長く滞在します。

回答:


5

これを行うには、を設定しtextwidth、から削除tformatoptionsます。

set textwidth=29
set formatoptions-=t

を使用するには、でqオプションを有効にする必要もありformatoptionsますgq。常にオンになっているように見えますがset formatoptions+=q、安全のためにを追加することもできます。

現在のユースケースに問題はないはずですが、cオプションはコメントを自動折り返しますset formatoptions-=c

詳細については、以下を参照してください。

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.

0

これを行うには2つの方法があり'textwidth'ます。文字または列でテキストの幅を設定します。'wrapmargin'右マージンの幅を文字または列で設定します。たとえば、テキストを29文字または列の幅に折り返すには:

set textwidth=29

見る

:help 'textwidth`
:help 'wrapmargin'
:help 10.7

お返事ありがとうございますが、これは私が探していたものとは完全には一致しません。テキストの一部を手動でハードラップして、他のセクションに影響を与えないようにしたい。私にとって、これらのオプションはどちらも、入力した新しいテキストを自動的にハードラップします。これをよりよく説明するために質問を更新します。
jdw1996

Vimにはそのための方法が組み込まれていません。このgqコマンドは、呼び出しごとの折り返し幅の設定を提供していません。これはtextwidthtextwidth特定の行だけでなく、バ​​ッファ全体に適用されます。ラップするセクションを手動でラップすることに問題がなければ、次のような関数を作成できtextwidthます。textwidth29に設定。gq選択した行で実行します。の値を復元しますtextwidth。次に、この関数をに割り当てますformatexpr。または、fmt選択した行をフォーマットするなどの外部プログラムを使用することもできます。
garyjohn 2017

なるほど、分かりました。そのような関数を書くことを検討します。ありがとう!
jdw1996
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.