Ширина текста VIM не влияет

Это кажется глупым вопросом, но я не могу найти ответ в Интернете (или в помощи VIM). Я использую VIM 7.2 на Mac OS X. Все, что я хочу сделать, это обвести мои строки на 72 символа, но делать

:set textwidth=72 

не влияет. Текстовая ширина устанавливается правильно (я вижу, что когда я просто запрашиваю ": set textwidth" ), но ни существующие строки, ни новые строки, которые я набираю после установки textwidth, не обертываются. Если я запустил новую строку, она все равно не будет завершена. Откройте и закройте файл, без изменений. Я также попытался: установить wrapmargin = 72 (с textwidth = 0), без эффекта.

Что мне здесь не хватает?

Ответы

Ответ 1

Что делает

:set formatexpr?
:set indentexpr?
:set cindent?
:set filetype?
:set paste?
:filetype

печать.

По крайней мере один из них (и я думаю, что все они) переопределит настройку для textwidth.

Например, если вы редактируете исходный файл C, правила с отступами C переопределяют textwidth.

Ответ 2

Попробуйте gggqG применить новую ширину текста для всего буфера.

  • gg означает: перейти к началу буфера
  • gq означает: переформатировать текст, включенный в движение
  • G означает: перейти в конец буфера

(Он будет работать, если параметры формата установлены правильно, как указано в сообщении Zyx)

С другой стороны, вы также можете отобразить существующий текст шириной 72 символа, добавив modeline в начале или конце вашего файла. См. :help modeline

Что-то вроде vim:tw=72 должно работать.

Ответ 3

Я искал ответ на тот же вопрос и должен был немного скреститься, прежде чем нашел решение в документах VIM. Итак, я думал, что обновить поток и сохранить другие время.

Проблема в моем случае состояла в том, что по умолчанию ftplugin отключил текстовую ширину.

Просто обновление вашего .vimrc с помощью (:set tw=79 && :set formatoptions+=t) не будет работать, поскольку fplugins будут получены после vimrc.

Вот шаги, которые я выполнил:

1) узнайте, какие ваши текущие форматы (внутри vim)

:set formatoptions?
formatoptions=croql (note no 't')

2) создайте файл filetype.vim, предложенный vimdocs (http://vimdoc.sourceforge.net/htmldoc/filetype.html#ftplugin-overrule)

Overrule the settings after loading the global plugin.
You must create a new filetype plugin in a directory from the end of
'runtimepath'.  For Unix, for example, you could use this file:
    vim ~/.vim/after/ftplugin/fortran.vim
In this file you can change just those settings that you want to change.

3) добавьте строку :set formatoptions+=t && :set textwidth=79 в этом файле.

Voila! в следующий раз, когда вы откроете файл, он установит текстовую строку в нужные вам символы.

Как средство отладки, вы всегда можете проверить, какой файл переопределяет настройку vimrc, добавив вашу команду в подробное описание. Так, например, если я хочу проверить, кто обновил форматирование последнего, я бы напечатал

:verbose set formatoptions? 
formatoptions=croqlt
Last set from ~/.vim/after/ftplugin/fortan.vim

Ответ 4

Vim ничего не сделает, если не будет запрошено. textwidth будет иметь эффект для редактируемых строк, если у вас есть t (только для комментариев), c (только для комментариев) или оба в formatoptions (если a там нет, то она будет автоматически открываться только тогда, когда вы достигнете поля, установленного на textwidth), или если вы используете gq для переформатирования текста. Если я не ошибаюсь, вы можете установить такие formatexpr или formatprg, чтобы textwidth был проигнорирован.

Ответ 6

У меня была такая же проблема, и я нашел следующее решение для меня достаточно хорошо:

autocmd FileType python setlocal textwidth=79 formatoptions+=t

Не стесняйтесь изменять python как ваш выбор типа файла (например, * или список с разделителями-запятыми python,ruby,go,sh,javascript)

Подробнее о formatoptions

см. :h fo-table