TeX入力の「段落」の意味を変更しますか?


8

私はこのようなセクションがたくさんあるLaTeXコードを書いています

\begin{definition}
blah blah blah ...
...
\end{definition}    

通常のテキストでは、gq]すべてをうまくリラップするのがとても好きです。上記のようなブロックセクション内では、endコマンドもラップされています。

vimが行の開始\endで段落を終了することを伝える方法はありますか?または、使用できる別の書式設定コマンドがあります(に<F8>マップしましたがgq]、再定義してもかまいませんか?

回答:


6

これを行う1つの方法は、ievimtexプラグインやvim-textobj-latexを使用するなど、さまざまな場所で利用可能な(inside-environment)カスタムテキストオブジェクトを使用します(他にもあります)。この機能により、rewrapコマンドは次のようになります。

gqie

または

gwie

(カーソル位置を維持するため)。

現在のテキスト位置(これはあなたのユースケースであることがわかります)から段落の最後までテキストを再フォーマットするだけの場合は、おそらく次の構成で行うことができます(プラグインは必要ありません)。

gq/\(^\s*$\|\\end\)

これは、空の行か、\endキーワードを含む行のどちらか早い方にフォーマットされます。したがって、このマッピングを使用できます。

:nnoremap <F8> gq/\(\\end\\|^\s*$\)<CR>

gqiebegin ... endブロックの内部で必要なことは何ですか?メインテキストの本文では、\ end {document}まですべてを折り返そうとします-次の空白行で停止するように指示する方法はありますか?
ブリストル

さて、環境外-多分デフォルトgqap
VanLaser

可能なF8再マッピングについては、更新された回答を参照してください。
VanLaser

次のように機能しないため、どこかにタイプミスがあると思います:map <F8> gq/\(^$\|^[%]$\|^\\end\)<CR>。誰かが私が間違っていることを教えてもらえますか?私は完全に空行(一致しようとしている^$)、唯一%コメント文字(とライン^[%]$)またはラインの開始を\end^\\end)。
ブリストル

マッピングの\\|代わりにセパレータとして使用する必要があると思います\|
VanLaser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.