Я хочу использовать функцию мягкого переноса Vim ( :set wrap
), чтобы обернуть некоторый код длиной 80 символов, независимо от моей фактической ширины окна.
Я пока не смог найти способ сделать это - вся мягкая упаковка, кажется, привязана к ширине окна
textwidth
иwrapmargin
оба предназначены для жесткой упаковки (они вставляют символы новой строки в файл)- вертикальное разделение на несколько окон и использование
:vertical resize 80
(возможно, с,:set breakat=
чтобы разрешить разрывы для любого символа) на одном из них вроде работает (хотя это немного хакерски), но ломается при использовании,:set number
поскольку номера строк занимают переменное количество столбцов (в зависимости от от длины файла), и они являются частью 80.
Есть ли способ сделать это в vim? Согласно другим источникам, это не выглядит многообещающим .
Прямо сейчас мое приближение состоит в том, чтобы использовать /^.\{80}\zs.\+
поиск по умолчанию, чтобы он хотя бы был выделен. Я думал о добавлении :syntax
элемента для него, но это сломалось, когда оно перекрывало другие элементы синтаксиса, поэтому я отказался от этой идеи.
Ответы:
Ты мог
:set numberwidth=6
и:set columns=86
(или с помощью мыши) до нужного размера.Если вы редактируете файл с миллионом строк, у вас могут возникнуть проблемы, но это маловероятно. Таким образом, вы тоже тратите 6 столбцов экранной площади. Так что есть еще много проблем.
Вы можете выделить за 80-й столбец, используя
:match
как здесь, так и здесь .Кроме того, я не вижу способа сделать это. Хотя, похоже, это было бы неплохо.
источник
Попробуй это:
Вы можете удалить,
if (&columns > 80) |
если всегда хотите 80 столбцов.источник
У меня нет решения для мягкой обертки, но что касается маркировки столбца, начиная с Vim 7.3 (выпущен 15 августа 2010 г.)
:set colorcolumn=80
выделяется столбец 80. Цвет будет зависеть от вашего файла синтаксиса.См Vim 80 колонки макета проблемы ,
:h colorcolumn
.источник
:let w:eighty_column_match = matchadd('ColorColumn', '\%81v.\+', 100)
colorwidth
вещь полезна по другим причинам, поэтому я рад, что вы это разместили.Вы пробовали
'linebreak'
?источник
breakat
это всего лишь узор (а не длина), поэтому я не понимаю, как я могу использовать это для принудительного мягкого обертывания на 80 ....^.{,80}\b
тем, кто использует мягкие / расширяемые вкладки. Обратите внимание, что регулярное выражение perl, а не регулярное выражение vim.Нет хорошего способа сделать это. Мы можем взломать импровизированный
setlocal softwrap
с ,autocmd
если мы изменим @eborisch ответа. Если мы изменяем размер каждый раз, когда вводим буфер, и мы изменяем размер до определенной длины, когда локальная переменнаяsoftwrap
, мы получаем желаемое поведение.Предположим, что мы хотим мягко перенести до 80 столбцов, мы можем записать следующее в
.vimrc
.Чтобы включить режим для определенного буфера, используйте следующие команды:
источник