Автоматичний формат: обгортання пізніше рядка під час вставки тексту


9

Прочитавши 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

1
Це, здається, добре працює для мене. Я запустив Vim, vim -u NONEщоб запобігти завантаженню файлу vimrc. Чи вирішує це проблема для вас? Яку версію Vim ви використовуєте?
Мартін Турноїй

Ні, це не допомагає. Vim 7.4 для Windows та Ubuntu.
mgiuffrida

Є чи pasteвстановити, випадково? Спробуйте:set paste?
Volker Siegel

@VolkerSiegel ні, pasteне встановлено. Коли pasteвстановлено, обгортання не відбувається взагалі.
mgiuffrida

Відповіді:


2

Я натрапив на часткове рішення, використовуючи formatoptions=tcqaw. В основному, ви все одно автоматично обертаєте абзаци, але абзац закінчується, коли у рядку немає пробілу пробілів, що підходить для багатьох випадків.

Використовуючи ваш приклад (з незначною модифікацією, без скасування та використання " <SPACE>Це ...") я отримую такий результат:

This is still a long  
This is pasted and 
not wrapped
line
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.