Отключение автокомментирования для всех типов файлов

StackOverflow https://stackoverflow.com/questions/3240451

  •  15-09-2020
  •  | 
  •  

Вопрос

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

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

au FileType * setlocal formatoptions-=cro

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

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

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

Это было полезно?

Решение

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

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

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

в итоге я удалил свой ~/.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

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

Другие советы

Я провел еще некоторое расследование и, похоже, местоположение моего 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 необходимо указать после включения плагинов типов файлов.

Еще одна причина, по которой это может не вступить в силу...

От :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

потому что я столкнулся с этим.

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

:verbose set formatoptions?

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

Для имеющихся autocmd события, прочитайте это:

:help {event}

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

    # vim without auto comment
    alias vi="vi +'set fo-=cro'"

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top