Мягкая обертка на 80 символов в Vim в окне произвольной ширины


Я хочу использовать Vim мягкий обернуть возможности (:set wrap), чтобы обернуть код в 80 символов, независимо от моей реальной ширины окна.

я еще не смог найти способ сделать это-вся мягкая обертка кажется привязанной к ширине окна

  • textwidth и wrapmargin оба для жесткого обертывания (они вставляют символы новой строки в файл)
  • вертикальное разделение на несколько окон и с помощью :vertical resize 80 (возможно с :set breakat= чтобы разрешить разрывы на любом символе) на одном из них вроде работает (даже если это немного hackish), но разрывы при использовании :set number поскольку номера строк занимают переменное количество столбцов (в зависимости от длины файла), и они являются частью 80.

есть ли способ сделать это в Vim? это не выглядит многообещающим, согласно другим источникам.

сейчас мое приближение-это просто /^.{80}zs.+ как мой поиск по умолчанию это в меньше всего выделено. Я думал о добавлении :syntax item для него, но это сломалось, когда он перекрывал другие элементы синтаксиса, поэтому я отбросил эту идею.

4 106

4 ответа:

вы можете

  • установите большую минимальную ширину для столбца номера строк через :set numberwidth=6 и
  • тогда вы можете изменить размер окна с :set columns=86 (или с помощью мыши) до нужного размера.

Если вы отредактируете файл с миллионом строк в нем, у вас могут возникнуть проблемы, но это маловероятно. Вы тратите 6 столбцов экранной недвижимости таким образом тоже. Так что есть еще всякие проблемы.

вы можете выделить в прошлом 80-х столбец с помощью :match Как пишет здесь и здесь.

кроме этого я не вижу никакого способа сделать это. Кажется,это было бы неплохо, хотя.

у меня нет решения для мягкой обертки, но что касается маркировки столбца, начиная с Vim 7.3 (выпущено 2010-08-15) :set colorcolumn=80 выделить столбец 80. Цвет будет зависеть от вашего синтаксиса.

посмотреть Vim 80 макет столбца касается,:h colorcolumn.

попробуйте это:

set columns=80
autocmd VimResized * if (&columns > 80) | set columns=80 | endif
set wrap
set linebreak
set showbreak=+++

Вы можете удалить if (&columns > 80) | Если вы всегда хочу 80 столбцов.

ты пробовал 'linebreak'?

        *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
  'linebreak' 'lbr' boolean (default off)
        local to window
        {not in Vi}
        {not available when compiled without the  |+linebreak|
        feature}
If on Vim will wrap long lines at a character in 'breakat' rather
than at the last character that fits on the screen.  Unlike
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
it only affects the way the file is displayed, not its contents.  The
value of 'showbreak' is used to put in front of wrapped lines.
This option is not used when the 'wrap' option is off or 'list' is on.
Note that <Tab> characters after an <EOL> are mostly not displayed
with the right amount of white space.