自動フォーマット:テキストを挿入するときに後で折り返す


9

読んだ後help textwithhelp fo-table、私は私が設定したときにすることを期待しました

set textwidth=20  " for demonstration
set formatoptions=tcq

その後、テキストを挿入すると、常に最終的に行が折り返されますが、そうではありません。折り返しは、カーソル(またはその前)でのみ発生します。貼り付けてもラッピングは一切発生しません。

例(Vim 7.4):

12345678901234567890
This is a long line

ヒットAして入力を開始すると、行は自動的に折り返されます。

しかし、02wi「still」と入力して入力しても、折り返されません。

12345678901234567890
This is still a long line

折り返す前に、さらに7文字入力する必要があります。その後、問題は次の行に続きます。

12345678901234567890
This is still more <-- it wraps here
typing and again a long line

貼り付けでも折り返しはトリガーされません。

12345678901234567890
This is a long line This text is pasted and not wrapped

set fo+=aが欲しいのはそれだと思いますが、それは段落レベルにも当てはまりますが、ある行の自動フォーマットを他の行に広げたくありません。

または、オプションがありませんか?

明確に言うと、を起動した後vim -u NONE、これは私が入力したものです(コメントは少ない):

:set textwidth=20<CR>
:set formatoptions=tcq<CR>
iThis is a long line<ESC>
02wistill <ESC>                " no wrap happens, but I'd like it to
u
:let @r = "This text is pasted and not wrapped"<CR>
$"rp                           " no wrap happens, but I'd like it to

1
これは私にとってはうまくいくようです。vim -u NONEvimrcファイルのロードを防ぐためにVimを起動しました。これで問題は解決しましたか?どのVimバージョンを使用していますか?
マーティンTournoij

いいえ、それは役に立ちません。WindowsおよびUbuntu上のVim 7.4。
mgiuffrida 2015年

されpaste、誤って、設定されていますか?試してみる:set paste?
Volker Siegel

@VolkerSiegelいいえ、paste設定されていません。pasteが設定されている場合、ラッピングはまったく発生しません。
mgiuffrida 2015年

回答:


2

を使用して、部分的な解決策を見つけましたformatoptions=tcqaw。基本的に、段落は自動的に折り返されますが、行末に空白がないときに段落が終了します。これは多くの場合に適しています。

あなたの例を使用して(少し変更を加えて、元に戻すことなく、「<SPACE>This ...」を使用して)、次の結果が得られます。

This is still a long  
This is pasted and 
not wrapped
line
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.