Отключение автокомментирования для всех типов файлов - PullRequest
3 голосов
/ 13 июля 2010

Я включил filetype plugin для некоторых плагинов vils rails, которые я добавил, но побочным эффектом этого является то, что теперь автокомментирование включено во всех типах файлов (например, если я начинаю строку с #, Следующая строка, либо Введите в режиме вставки или O и т. д. для входа в режим вставки, также получит #).

Я нашел руководство по отключению автоматического комментирования formatoptions и добавил следующее в мой .vimrc:

au FileType * setlocal formatoptions-=cro

Тем не менее, я все еще сталкиваюсь с проблемами - если я явно :source .vimrc (или не введу setlocal ... напрямую), это не вступит в силу. Я решил, что это так, потому что ftplugins от vim переопределяют мои параметры своими собственными.

Затем я нашел второе руководство , в котором говорится об использовании сценария after ftplugin для внесения изменений после запуска сценариев ftplugin, однако их решение заключается в создании символических ссылок для каждого отдельного типа файла в ~ / .vim / после / ftplugin к центральному файлу, и мне это кажется глупым.

Есть ли способ создать общий сценарий после ftplugin или я неправильно подхожу к этой проблеме? Любая помощь будет оценена.

Ответы [ 6 ]

5 голосов
/ 14 июля 2010

Как насчет плагина "после"?Создайте файл в ~/.vim/after/plugin/ с именем noAutoComments.vim (или где-либо еще) и поместите в него свой autocmd?

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

Почему это работает?Я только догадываюсь здесь, но у меня есть ощущение, что autocmd в файле ~/.vimrc удаляется другим файлом (но до того, как файлы "after" получаются).

Iв итоге я удалил мою директорию ~/.vim и заменил мою ~/.vimrc следующими 3 строками:

filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro

Только с этими строками в моем каталоге ~/.vimrc и без ~/.vim/ кажется autocmdработать должным образом (Vim 7.1).

Для любого редактируемого файла:

:verbose set formatoptions?
formatoptions=ql
      Last set from ~/.vimrc

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

3 голосов
/ 09 декабря 2011

Другая причина, по которой это может не вступить в силу ...

С :he :set-=:

            When the option is a list of flags, {value} must be
            exactly as they appear in the option.  Remove flags
            one by one to avoid problems.

У меня

    " Turn off auto-commenting
    au FileType * setlocal formatoptions-=c
    au FileType * setlocal formatoptions-=r
    au FileType * setlocal formatoptions-=o

, потому что я запустилв это.

3 голосов
/ 15 июля 2010

Я провел еще несколько исследований, и кажется, что местоположение моего autocmd в моем файле .vimrc определяет, будет ли formatoptions переопределяться ftplugins vim или нет. Используя vim --noplugin для отключения всех внешних плагинов, я нашел следующие результаты:

Если мой vimrc выглядит так:

au FileType * setl fo-=cro
filetype plugin indent on

Результат :verbose set fo?:

formatoptions=croql
  Last set from /usr/share/vim/vim72/ftplugin/ruby.vim

Однако, если строки в моем vimrc перевернуты:

filetype plugin indent on
au FileType * setl fo-=cro

Результат :verbose set fo?:

formatoptions=ql
  Last set from ~/.vimrc

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

1 голос
/ 07 августа 2013

Я боролся с этой проблемой и наконец-то работаю со следующими строками:

syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro

Я думаю, что ключом здесь является то, что autocmd - это место после filetype plugin on.

1 голос
/ 07 февраля 2013

Я пробовал решения, предложенные многими, но ни одно из них не помогло мне, но я нашел один очень простой обходной путь, а именно, в вашем ~ / .bash_aliases:

    # vim without auto comment
    alias vi="vi +'set fo-=cro'"
1 голос
/ 14 июля 2010

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

:verbose set formatoptions?

Это скажет вам, где была установлена ​​опция, что может упростить определение, какой autocmd использовать. В качестве альтернативы, если вы не возражаете против небольшого взлома, то, вероятно, я бы сделал это, просто выяснив, где он установлен в плагине, и закомментируйте эту строку (и запишите это на случай, если вы когда-нибудь обновитесь плагин). Вы также можете связаться с автором плагина и попросить его сделать его настраиваемым параметром.

Для доступных autocmd событий прочитайте это:

:help {event}
...