Vim: «набор форматов» теряется? - PullRequest
23 голосов
/ 20 мая 2011

У меня set formatoptions=cqn в моем vimrc, но по какой-то причине оно не прилипает.Кажется, что в какой-то момент Vim возвращается к значению по умолчанию (fo=tcq) ... Но я не могу понять, почему.Запуск -V100/tmp/log просто дает мне:

formatoptions=tcq
  Last set from ~/.vimrc

Без полезного контекста.

Итак, есть ли способ заставить форматирование придерживаться?Или мне просто нужно создать autocmd для сброса его при каждой загрузке нового файла?

Редактировать

Использование :verbose set formatoptions показывает это:

formatoptions=tcq
  Last set from ~/.vimrc

Однако единственная ссылка на fo или formatoptions в моем ~ / .vimrc - set formatoptions+=cqn.

Ответы [ 5 ]

14 голосов
/ 05 января 2012

Это происходит из-за плагина C-файла в VIM.Поскольку плагин файла загружается после загрузки .vimrc, настройки в .vimrc перезаписываются.
Решение, предложенное Дэвидом Вулевером, кажется наилучшим вариантом.
Добавьте следующую строку в .vimrc:

autocmd BufNewFile,BufRead * setlocal formatoptions+=cqn

... вместо обычной команды set formatoptions.

5 голосов
/ 11 июня 2014

Я тоже столкнулся с этой проблемой. У меня были специфичные для проекта конфигурации что-то вроде

autocmd BufRead,BufNewFile project/*.c setlocal formatoptions-=cro

Однако set fo? показал formatoptions=croql. Оказывается, мне нужно BufWinEnter вместо BufRead:

После отображения буфера в окне. это может быть при загрузке буфера (после обработка моделин) или когда скрытый буфер отображается в окне (и нет больше не спрятано). Не бывает за: сплит без аргументы, так как вы продолжаете редактировать то же самое буфер, или ": split" с файлом, который уже открыть в окне, потому что он повторно использует существующий буфер. Но это случается для «: split» с именем текущего буфера, так как он перезагружает этот буфер.

Так что это работает

autocmd BufWinEnter,BufNewFile project/*.c setlocal formatoptions-=cro
4 голосов
/ 21 мая 2011

Согласно документации vim на formatoptions:

ПРИМЕЧАНИЕ. Для этого параметра установлено значение Vi. значение по умолчанию, когда «совместимый» -
установить и значение Vim по умолчанию, когда «совместимый» сбрасывается.

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

4 голосов
/ 20 мая 2011

Я звучу так, как будто какой-то файл либо получен из вашего .vimrc, либо плагины меняют это значение.

Что-то, что можно попытаться определить, это

Запустите vim без поиска чего-либо, используйте

vim -u NONE

Используя NORC skipps .vimrc, но загружает плагины

Проверьте :help --noplugin, чтобы прочитать о различных параметрах запуска, которые управляют источником.

--noplugin      Skip loading plugins.  Resets the 'loadplugins' option.
                {not in Vi}
                Note that the |-u| argument may also disable loading plugins:
                        argument        load vimrc files        load plugins ~
                        (nothing)               yes                 yes
                        -u NONE                 no                  no
                        -u NORC                 no                  yes
                        --noplugin              yes                 no

Возможно, этотакже может быть полезным (из help: :set):

When 'verbose' is non-zero, displaying an option value will also tell where it
was last set.  Example: >
        :verbose set shiftwidth cindent?
<         shiftwidth=4 ~
                  Last set from modeline ~
          cindent ~
                  Last set from /usr/local/share/vim/vim60/ftplugin/c.vim ~

возможно ...: -)

Редактировать

Используете ли выcompatible?От help: formatoptions

    NOTE: This option is set to the Vi default value when 'compatible' is
    set and to the Vim default value when 'compatible' is reset.
0 голосов
/ 29 октября 2015

Найдено в /usr/share/vim/vim74/ftplugin/vim.vim:

" Set 'formatoptions' to break comment lines but not other lines,<br>
" and insert the comment leader when hitting <CR> or using "o".<br>
setlocal fo-=t fo+=croql

Удалить. Тогда все сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...