O Vim continua automaticamente um comentário quando pressiono Enter no modo Inserir, o que acho útil.
No entanto, não quero que o comentário continue depois de pressionar 'o' no modo normal para inserir uma nova linha abaixo do final do comentário.
Eu li que preciso remover a opção o
do meu formatoptions
, então coloquei esta linha no final do meu arquivo vimrc:
set formatoptions-=o
Mas não mudou nada e, quando executo :set formatoptions
do lado de vim, mostra-me minhas formações croql
.
Como faço para me livrar do 'o'?
Editar:
Eu segui alguns passos apontados nos comentários de Sato Katsura:
A solução começa com a execução
:verb set fo
para ver onde as formações foram modificadas pela última vez.
Aqui está a saída para verb set fo
:
formatoptions=croql
Last set from /usr/share/vim/vim73/ftplugin/vim.vim
vimrc
formatting
theonlygusti
fonte
fonte
.vimrc
, por isso não podemos ajudar até que você o publique. Suponho que um plugin o altere ou não está sendo fonte corretamente.set formatoptions-=o
no meu trabalho vimrc?", Que isso desativa comentários quando prementeso
é coincidência :-)Respostas:
Quando
vim
inicia, ele é executado$VIMRUNTIME/ftdetect.vim
para descobrir que tipo de arquivo você está editando; depois, se você'ftplugin'
definiu, ele fornece as$VIMRUNTIME/ftplugin.vim
fontes$VIMRUNTIME/ftplugin/&filetype.vim
(consulte:help startup
para obter mais detalhes).Você pode alterar ou substituir
$VIMRUNTIME/ftplugin.vim
ou$VIMRUNTIME/ftplugin/&filetype.vim
. Crie uma pasta e subpasta no seu diretório pessoal chamado.vim/after
.Se você deseja substituir as formações de todos os plug-ins de tipo de arquivo, edite
$HOME/.vim/after/ftplugin.vim
ou edite$HOME/.vim/after/ftplugin/lua.vim
(ou substitualua
por qualquer idioma - no seu casovim
). Para uma explicação adequada de como isso funciona, consulte:help 'runtimepath'
(e:help :runtime
).Coloque o seguinte conteúdo no arquivo:
Você pode ver se funcionou executando
:scriptnames
. Você deve obter uma lista como a seguir:Observe as linhas 11 e 12. Seus caminhos de arquivo serão um pouco diferentes.
fonte
formatoptions
, no entanto o meu.vim/after
é originado após esses plugins ...:scriptnames
.formatoptions
em~/.vim/after/ftplugins.vim
não funciona - então eu encontrei este argumento que espécie de explica o porquê.Descobri que posso fornecer uma solução improvisada usando um comando automático.
A seguinte linha no seu
.vimrc
arquivo deve aplicar as novas formações em todos os lugares:No entanto, isso não chega a resolver o problema; Ainda não entendo por que um simples
set
não foi suficiente e, como foi apontado nos comentários, essa solução não é ideal.fonte
formatoptions
(por exemplo, Perl, Ruby e vários outros definem isso). Parece uma solução aceitável?o
independentemente do tipo de arquivo. Nesse caso, isso parece apropriado.Eu tive uma experiência semelhante ao OP.
Eu descobri que
t
estava sendo adicionado ao meu,formatoptions
apesar de tentar deliberadamente desativá-lo.Depois de usar
:verbose set fo
para ter certeza de que era proveniente de .vimrc, notei que o comportamento parecia depender de onde coloquei as formações no meu arquivo .vimrc. Eu descobri que isso estava acontecendo por causa de onde eu tinha colocadoset nocompatible
no meu arquivo:Acontece que isso é especificamente chamado em
:help nocompatible
:Depois de seguir este bom conselho, meus
formatoptions
foram preservados conforme desejado. Não sei se o OP estava enfrentando esse problema exato ou se havia alguma outra interação, mas fiquei feliz em descobrir o que estava causando isso. Espero que isso ajude alguém a descobrir o que está (inicialmente inexplicavelmente) alterando suas configurações.Também gosto do autocmd de theonlygusti - existem algumas opções que eu nunca quero definir, não importa o tipo de arquivo. Eu estou olhando para você
t
.fonte
Como muitos de nós, usuários do Vim, estamos sofrendo com isso, investiguei um pouco mais.
Minha solução é criar o
$HOME/.vim/after/ftplugin.vim
como sugerido por @ abcq2 apenas para perceber, isso não vai mudar nada. Dada a lista fornecida por:scriptnames
, esse arquivo é fonte muito cedo. No entanto, a segunda sugestão de criar um$HOME/.vim/after/ftplugin/lua.vim
arquivo LUA ajuda.Ao
strace
aprender, aprendi que os pós-plug-ins genéricos do tipo de arquivo são originados antes que os pós-plug-ins específicos do tipo e do tipo de arquivo sejam originados após o tipo de arquivo. Não é muito intuitivo, mas é assim que funciona.Há mais informações no meu blog sobre isso.
fonte
after/ftplugin
isso ajudaria. A melhor maneira é usar substituições específicas do tipo de arquivo (usando um comando automático FileType ou umafter/<filetype>.vim
arquivo específico ). Veja também a ajuda de:h ftplugin-overrule
after/<filetype>.vim
na minha resposta.Eu olhei para ver quais arquivos / caminhos que
vim
tentaram carregar, usandostrace
(como descrito aqui ), então criei um~/.vim/after/plugin/
diretório (foi o último local de configuração quevim
tentou carregar) e, em seguida, coloquei meu link~/.vimrc
para esse local:O que eu fiz com
strace
:Basicamente, eu corri:
... saia imediatamente
vim
(:q!
). Em seguida, carreguei~/vim_strace
($ vim ~/vim_strace
) e fui para o final (:$
). Então eu comecei a ler de baixo procurando por linhas começando comopenat(AT_FDCWD, "/home/karl/.....
.A primeira coisa que vejo é:
Mas não é aí que eu quero minhas opções de configuração. A próxima linha, logo acima da
.viminfo
linha, era:... "Esse arquivo ou diretório não existe", eh? Parece um vencedor. Então, esse foi o que eu escolhi.
Agora, funciona perfeitamente.
Espero que isso ajude alguém em algum lugar.
fonte
vim
honra as opções no.vimrc
arquivo. Releia e certifique-se de entender a pergunta e a minha resposta.~/.vim/after/plugin/formatoptions.vim
comset fo-=o
é mais palatável ... Mas isso ainda não funciona quando um plug-in de tipo de arquivo substitui isso. Por exemplo, abra o Vim (sem arquivo ou um arquivo não relacionado) e use:e
para abrir ou criar um*.vim
arquivo. Você verá que as formações estãoo
nele novamente, uma vez que está sendo definido para esse bufferftplugin/vim.vim
e seuafter/plugin
arquivo não poderá substituí-lo.:set rtp?
você ver que~/.vim/after
é último. Mas, como mencionado anteriormente, isso realmente não funciona, poisfo
será redefinido pelos plugins ft e esse é realmente o problema aqui.~/.vimrc
depois que os outros plugins foram carregados, permitindo que eu~/.vimrc
substituísse os padrões, como pretendido.