После выполнения :set wrap Vim переносит строки длиннее окна.
:set wrap
Но возможно ли Vim переносить новую строку только на пустые места, а не на полпути через слово?
:help wrap
Этот параметр изменяет способ отображения текста. Это не меняет текст в буфере, см. «Текстовая ширина» для этого. Когда включено, строки длиннее ширины окна будут переноситься и отображение продолжается на следующей строке. Когда офлайн не будет переносить и будет отображаться только часть длинных строк. Когда курсор перемещен в часть, которая не отображается, экран будет прокручиваться по горизонтали. При необходимости строка будет разбита на середину слова. См 'перевод строки', чтобы получить разрыв на границе слова.
:help linebreak
Если на Vim будут переносить длинные строки у персонажа в 'breakat' чем у последнего символа, который умещается на экране.
:help breakat
'breakat' 'brk' string (по умолчанию " ^I!@*-+;:,./?")
string
" ^I!@*-+;:,./?"
Итак, :set linebreak и оно должно работать из коробки. Или вы можете ограничить breakat только пробелами вместо пробелов + пунктуации.
:set linebreak
breakat
Используйте
или 'lbr' для краткости.Он будет разбивать строки на символах, включенных в ваш параметр 'breakat', который по умолчанию содержит пробел.
'lbr'
'breakat'
Открыв vim, нажмите esc и введите
:set lbr
Следующее выполнит перенос строки без разрывов слов и сохранит более короткие строки.
:set formatoptions+=w :set tw=80 gggqG
Чтобы попытаться отформатировать текущий абзац, попробуйте следующее:
:nnoremap Q gqip