Ширина текста 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
был проигнорирован.
Ответ 5
set formatoptions+=t
Это может помочь вам
Ответ 6
У меня была такая же проблема, и я нашел следующее решение для меня достаточно хорошо:
autocmd FileType python setlocal textwidth=79 formatoptions+=t
Не стесняйтесь изменять python
как ваш выбор типа файла (например, *
или список с разделителями-запятыми python,ruby,go,sh,javascript
)
Подробнее о formatoptions
см. :h fo-table