Para garantir que o comportamento não seja afetado pela minha configuração pessoal, desejo iniciar o Vim de maneira a ignorar todos os meus arquivos de configuração instalados pelo usuário, como se o Vim tivesse sido instalado pela primeira vez pela primeira vez e o usuário o executasse imediatamente.
Isso é abordado na FAQ, que sugere que a resposta é iniciar o Vim com o seguinte comando:
vim -u NONE -U NONE -N -i NONE
Isso ocorre na maior parte do caminho, mas a runtimepath
opção ainda contém ~/.vim
e, principalmente, ~/.vim/after
(por exemplo, se eu ativar a detecção de tipo de arquivo posteriormente e alterar o tipo de arquivo, o código ~/.vim/after/syntax/the_relevant_filetype.vim
será executado).
Posso solucionar esse problema específico invocando os seguintes comandos na inicialização *:
:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after
... mas não tenho certeza se:
- Esta é uma solução robusta: esses são os únicos caminhos que podem fazer com que a configuração do usuário entre em vigor? Existe mais alguma coisa que eu não tenha pensado?
- Existe uma maneira melhor de alcançar o resultado desejado.
* Ao usar --cmd
ou -u vimrc
argumentos shell, ou simplesmente digitando-los manualmente.
Edição : Aqui está um exemplo específico do tipo de problema que estou tentando corrigir. (Embora eu queira que a solução corrija outros possíveis problemas que ainda não tenha contado.):
Crie um arquivo ~ / .vim / after / ftplugin / c.vim, contendo o conteúdo:
noremap i :echom "This is not default behaviour"<CR>
Agora, temos algumas configurações instaladas pelo usuário que queremos ignorar. Vamos testar a solução sugerida pelo FAQ.
Execute o Vim com o comando:
vim -u NONE -U NONE -N -i NONE
Digite os comandos:
:filetype plugin on :set ft=c i
Comportamento desejado : o Vim deve entrar no modo Inserir. Isso é o que faria se não existisse configuração do usuário.
Comportamento observado : o Vim imprime "Este não é um comportamento padrão"
HOME=/dev/null vim -u NONE
:?:cd ~
, por exemplo , mas também o local padrão doviminfo
arquivo está em $ HOME, o que pode causar o E138. Acho que criar um diretório novo e vazio e usá-lo para $ HOME pode ser a melhor solução.-u NONE
?/tmp
poderia ser melhor, foi o meu primeiro pensamento, mas depois escolhi / dev / null como um buraco negro. ... Ou algo assimHOME=$(mktemp -d) vim ...
.-u NONE
? Depende do comportamento que você precisa, suponho.Respostas:
A partir do Vim 8.0.1554 (infelizmente ainda não o Neovim), você pode usá-lo
vim --clean
. Este método é recomendado por:help bugs
.:help --clean
docs:fonte
$HOME
variável. Desenvolvedores do Goodjob Vim. E obrigado pela resposta!--clean
também funciona com oneovim
master agora ( github.com/neovim/neovim/commit/… , a ser incluído no 0.4.0), mas não exclui o diretório inicial.Uma maneira de eliminar arquivos específicos do usuário seria usar um valor diferente de
$HOME
. Para permitir que nada seja lido ou gravado (como viminfo), você pode usar/dev/null
:Isso causará erros
viminfo
, portanto, você pode criar uma pasta temporária ou usar uma existente (como/tmp
):Com isso
$HOME
,-u NONE
pode não ser necessário, dependendo do que o administrador adicionou ao sistemavimrc
. Por exemplo, em todos os sistemas de laboratório I administram, eu adicionei um/etc/vim/vimrc.local
(origem por padrão do Vim embalados/etc/vim/vimrc
) que temnocompatible
,syntax
etc., set, efiletype on
bem.fonte
Não posso responder muito disso, mas um ponto que não vejo mencionado, e estou respondendo a uma interpretação do que está no título
alguns sugeriram
vim -u NONE
ouvim -u NORC
de certa forma, isso é um pouco mais barebones do que nenhum arquivo vimrc. Quando digito 'i', ele não diz 'inserir'. Você ainda pode querer dizer 'inserir'. Se você iniciou o vim com o arquivo vimrc em branco, ele mostraria insert
isso ocorre porque o vim carrega uma configuração padrão primeiro.
Você pode apontar o vim para esse arquivo padrão para obter o efeito do seu arquivo vimrc em branco. Verifique se você possui
/etc/vim/vimrc
ou pode fazervim -u /etc/vim/vimrc
ou no osx, o arquivo padrão é/usr/share/vim/vicmrc
fonte
vim --clean
irá carregardefaults.vim
. Esta resposta está se referindo ao sistema vimrc (veja:help system-vimrc
.), Que acho que não está carregadovim --clean
.:help defaults.vim
), pode ser melhor para mudar o textodefault config
parasystem vimrc
nesta resposta. Ou melhor ainda, discuta os dois na resposta!Do Vim-FAQ 2.5 :
fonte
ensure that none of the behaviour I'm seeing is caused by user config
- parece que você está tentando fazer exatamente o que está sendo explicado nesta FAQ. Reli sua pergunta e ainda não entendo quais são as razões que você mencionou.runtimepath
configuração.runtimepath
? Parece o padrão para esta opção, conforme explicado em:help rtp
. Como esse valor está afetando seu teste?