Textwidth = 80のvimでドキュメントを書きました。このドキュメントをlibreofficeに貼り付けてフォーマットします。問題は改行です。 libreofficeでは、vimによって80文字の後に改行が挿入されているため、行が短すぎます。
2つの改行文字を使用して段落を区切ります(つまり、returnキーを2回押します)。\n\n文字を保持したまま、すべての単一の\ n文字を削除する方法はありますか?
このようなもの
:%s/\(\S\)\n/\1
:%s/\n/&&
動作するはずです。まあ、それはここで行います。
最初の置換は「非空白文字」(より具体的である可能性があります)と一致し、その後に改行が続き、置換で使用するためにその「非空白文字」をキャプチャします(\1
)。実際には、すべての「段落」が1行になります。
2つ目は、すべての改行文字を2つの改行文字に置き換えます。 &
は「一致したテキスト」を意味する代わりに使用されるため、ここで&&
は「2つの改行文字」を意味します。 :%s/\n/\r\r
と書くこともできますが、&&
の方が短くなります。
各段落でVipJ
を使用できます。
V
:行ごとの選択を開始します。ip
:段落全体を選択します。J
:行を結合します。各段落を2つの改行で区切るため、マクロを記録してこれを自動的に行うことができます。
qqVipJ2jq
[〜#〜] n [〜#〜]段落を結合するには、[〜#〜] n [〜#〜]@q
を使用します。
Vimでこれを行う方法はいくつかありますが、最も簡単な方法は次のとおりです。
:set tw=9999
gggqG
これにより、カーソルがバッファの最初の行(gg
)に移動し、そこからすべての行が最後の行(gq
)に再フォーマット(G
)されます。見る
:help gq