A desativação autocommenting para todos os tipos de arquivos
Pergunta
Eu liguei filetype plugin
para alguns trilhos vim plugins que eu adicionei, mas um efeito colateral esse parece ser o de que agora autocommenting tem sido habilitado em todos os tipos de arquivos (por exemplo, se eu começar uma linha com #
, a próxima linha, por Entrar em modo de inserção ou O, etc.para entrar no modo de inserção, também vai ter um #
).
Eu encontrei um guia para desactivar o auto-comentar formatoptions
, e acrescentou o seguinte a minha .vimrc:
au FileType * setlocal formatoptions-=cro
No entanto, eu ainda estou com alguns problemas -- a menos que explicitamente :source .vimrc
, (ou introduza o setlocal ...
diretamente), não tendo efeito.Decidi que este é o caso, porque vim ftplugins estão substituindo as minhas opções com as suas próprias.
Então eu encontrei um segundo guia que fala sobre o uso de um depois ftplugin script para fazer alterações após o ftplugin scripts de execução, no entanto, a sua solução é criar links simbólicos para cada tipo de arquivo em ~/.vim/after/ftplugin para uma central de arquivo, e este parece ser desajeitados para mim.
Existe alguma maneira de criar um genérico de pós-ftplugin script ou estou a abordar este problema de maneira incorreta?Qualquer ajuda seria apreciada.
Solução
Como sobre um "depois" plugin?Criar um arquivo no ~/.vim/after/plugin/
chamado noAutoComments.vim
(ou o que) e coloque seu autocmd em que?
Editar:
A razão pela qual isso funciona?Só estou supondo aqui, mas eu tenho a sensação de que o autocmd
no ~/.vimrc
arquivo está sendo removida por algum outro arquivo (mas antes o "depois" arquivos estão sendo originados).
Acabei removendo o meu ~/.vim
diretório de e substituiu o meu ~/.vimrc
com os 3 seguintes linhas:
filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro
Somente com estas linhas no meu ~/.vimrc
e não ~/.vim/
diretório, o autocmd
parece funcionar como o esperado (Vim 7.1).
Para qualquer arquivo que eu editar:
:verbose set formatoptions?
formatoptions=ql
Last set from ~/.vimrc
Eu ainda tenho para determinar qual o ficheiro (plugin) está causando esse problema, no entanto.
Outras dicas
Eu fiz alguma investigação mais e parece que a localização da minha autocmd
dentro do meu .arquivo vimrc determina se formatoptions
será substituído por vim ftplugins ou não.Usando vim --noplugin
para desativar todos os plugins externos, encontrei os seguintes resultados:
Se o meu vimrc se parece com:
au FileType * setl fo-=cro
filetype plugin indent on
O resultado de :verbose set fo?
é:
formatoptions=croql
Last set from /usr/share/vim/vim72/ftplugin/ruby.vim
No entanto, se as linhas no meu vimrc são invertidas:
filetype plugin indent on
au FileType * setl fo-=cro
O resultado de :verbose set fo?
é:
formatoptions=ql
Last set from ~/.vimrc
...qual é o resultado desejado.Assim, parece que o autocmd
deve ser especificado após a filetype plugins estão habilitados.
Uma outra razão, esta pode não ser a surtir efeito...
A partir de :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.
Eu
" Turn off auto-commenting au FileType * setlocal formatoptions-=c au FileType * setlocal formatoptions-=r au FileType * setlocal formatoptions-=o
porque eu tenho que correr para isso.
Usando um dos vários autocmd
eventos para definir a opção de configuração deve funcionar se você encontrar o caminho certo, mas que eu ia começar a por em execução:
:verbose set formatoptions?
Isto irá dizer-lhe onde a opção foi definida, o que pode torná-lo mais fácil para determinar qual autocmd usar.Como alternativa, se você não se importa um pouco de menor hacking, do jeito que eu provavelmente iria fazer, é só descobrir onde ele está definido no plugin e comente essa linha (e fazer uma nota no caso de você atualizar o plugin).Você também pode contatar o plugin do autor e pedir-lhes para torná-lo uma opção configurável.
Disponível autocmd
eventos, leia este:
:help {event}
Eu tentei as soluções propostas por muitos, mas nenhum deles funcionou para mim, mas eu encontrei uma solução simples, ou seja, no seu ~/.bash_aliases:
# vim without auto comment
alias vi="vi +'set fo-=cro'"
Eu estava lutando com esse problema e eu, finalmente, trabalha com as seguintes linhas:
syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro
Eu acho que a chave aqui é que o autocmd
é realizada após a filetype plugin on
.