После прочтения help textwith
и help fo-table
я ожидал, что когда я установил
set textwidth=20 " for demonstration
set formatoptions=tcq
тогда вставка текста всегда приводит к переносу строки, но это не так. Обтекание происходит только в (или перед) моем курсоре. И если я вставлю, обертывание не произойдет вообще.
Пример (Vim 7.4):
12345678901234567890
This is a long line
Строка будет автоматически перенесена, если я нажму A
и начну печатать.
Но если я нажму 02wi
и введу «все еще», это не переносится:
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
источник
vim -u NONE
для предотвращения загрузки файла vimrc. Решает ли это проблему для вас? Какую версию Vim вы используете?paste
установить, случайно? Попробуй:set paste?
paste
не установлено. Когдаpaste
установлено, обертывание не происходит вообще.Ответы:
Я наткнулся на частичное решение, используя
formatoptions=tcqaw
. По сути, вы по-прежнему автоматически переносите абзацы, но абзац заканчивается, когда в строке нет завершающего пробела, что подходит для многих случаев.Используя ваш пример (с небольшой модификацией, без отмены и используя «
<SPACE>
This ...»), я получаю такой результат:источник