Receio ter encontrado algo bastante estranho. Quando abro um arquivo normalmente, vim README.txt
está tudo bem. Porém sudo vim README.txt
, o arquivo fica em branco e gera um E138: Can't write viminfo file $HOME/.viminfo!
erro ao tentar sair.
Suspeitei que o .viminfo
arquivo estava corrompido, então o excluí. Esse problema permanece. Alguém pode ajudar?
permissions
vim
sudo
root
James Adam Buckland
fonte
fonte
ls .viminf*
?ls -la .vininf*
?Respostas:
Quando você executa,
sudo vim
inicia o vim como root. Isso significa que é o arquivo viminfo em / root que é o problema. Você deveria fazerrm /root/.viminf*
.Para certificar-se disso, executar
sudo vim
e executar o comando::!echo $HOME
. Isso mostrará que seu diretório pessoal é / root.Eu recomendaria que você não execute o vim como root, mas use
sudoedit
. Esta é uma solução mais segura, pois o editor não está sendo executado como root. Você nunca sabe o que um plug-in pode fazer. Além disso, ele permite que você use suas próprias configurações e plugins no vim e não os do root vimrc.sudoedit
é o mesmo que corrersudo -e
. O sudoedit funciona criando uma cópia temporária do arquivo que pertence ao usuário que está chamando (você). Quando você termina de editar, as alterações são gravadas no arquivo real e o arquivo temporário é excluído.Como regra geral: não execute as coisas como root se não for necessário.
fonte
Eu tenho esse erro em todas as saídas. Eu não usei
sudo
. Mencionou explicitamente meu diretório pessoal do usuário:Removendo
~/.viminfo
não corrigiu o erro.Acontece que eu tinha vários arquivos temporários do viminfo e, removendo-os, o problema foi corrigido:
Encontrei esta solução aqui .
fonte
Eu recebi o mesmo erro ao tentar
:wq
um arquivo em um disco que estava completamente cheio. Se você receber esta mensagem, poderá verificar o espaço em disco disponível.fonte
Uma maneira muito mais limpa de criar um diretório inicial seria usar o esqueleto que o linux fornece para você, por exemplo.
fonte
Para mim, o problema era que eu havia mudado meu diretório pessoal para um local dentro de uma montagem NFS. Por alguma razão, isso resultou no proprietário do diretório como "ninguém". Adicionar permissões de gravação para "outro" resolveu o problema, pois eu claramente não era o proprietário do arquivo.
fonte
Provavelmente, isso está acontecendo porque o diretório inicial ficou sem espaço em disco e qualquer nova operação do vim não pode gravar no arquivo .viminfo.
fonte
Eu tive o mesmo problema ao atualizar o conteúdo do Makefile. Eu precisava de uma variável local e decidi nomeá-la
HOME
, então entrei na linhaHOME=2.154
. Isso faz com que avim-HOME
configuração seja substituída por um diretório inexistente. Não use aHOME
variável para outro uso.fonte
HOME
é uma variável de ambiente predefinida e redefini-la geralmente não é uma boa ideia.Eu acho que isso pode se aplicar apenas a versões bastante antigas do linux / vi, mas o que descobri foi que havia arquivos temporários no diretório inicial do root com os nomes de arquivo /root/.viminfa.tmp ... /root/.viminfz.tmp e que havia 26 deles com timestamps cobrindo vários anos. Ficamos sem letras do alfabeto quando todos os az foram tirados. Eu removi todos esses arquivos e o problema desapareceu. É claro que a Henrik's
# rm -rf ~/.viminf*
resolveria esse problema perfeitamente.fonte
Parece que você limpou as variáveis de ambiente.
Fazem isto:
exportar HOME = / root
Isso deve resolver seu problema.
fonte
Não tenho certeza de como me deparei com esse cenário, pois não me lembro de abrir nenhum arquivo usando,
sudo vim
mas em cada:q
um dos arquivos eu estava recebendo uma mensagem semelhante 'Não é possível gravar o viminfo não é gravável'.rm ~/.viminfo
não resolveu e~/.vim/
estava vazio.chmod 666 ~/.viminfo
resolveu essa mensagem de aviso ao sair de um arquivo no Vim. Embora eu não tenha certeza de que esta é a melhor solução? Faz sentido por que interrompeu o aviso desde que .viminfo foi rw ------ antes e eu presumo que esteja sendo gravado com históricos de comandos do vim.fonte
No meu cenário, foi a ausência de
/root/.viminfo
arquivo completamente. Depois que toquei no arquivo, o erro parou e o arquivo foi atualizado ao sair do vim. PS: Este é o Linux embarcado no Windriver.fonte