Erro Vim E138: Não é possível gravar o arquivo viminfo $ HOME / .viminfo!

16

Eu tenho medo de ter me deparado com algo bastante estranho. Quando eu abro um arquivo normalmente, vim README.txt , está tudo bem. Mas após sudo vim README.txt , o arquivo fica em branco e me dá um erro E138: Can't write viminfo file $HOME/.viminfo! ao tentar sair.

Eu suspeitava que o arquivo .viminfo estava corrompido e, por isso, o excluí. Esse problema permanece. Alguém pode ajudar?

    
por James Adam Buckland 04.06.2014 / 18:34

8 respostas

24

Quando você executa sudo vim , inicia o vim como root. Isso significa que é o arquivo viminfo em / root que é o problema. Você deve fazer rm /root/.viminf* .

Para ter certeza disso, execute sudo vim e execute este comando: :!echo $HOME . Isso mostrará que o seu diretório pessoal é / root.

Eu recomendaria que você não execute 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 plugin pode fazer. Além disso, permite que você use suas próprias configurações e plugins no vim e não aqueles em raízes vimrc. sudoedit é o mesmo que executar sudo -e . O sudoedit funciona fazendo uma cópia temporária do arquivo que pertence ao usuário solicitante (você). Quando você terminar de editar, as alterações serão gravadas no arquivo real e o arquivo temporário será excluído.

Como regra geral: não execute as coisas como root, se não for necessário.

Espero que isso ajude você!

    
por 04.06.2014 / 20:56
11

Eu recebi esse erro em todas as saídas. Eu não usei sudo . Mencionou explicitamente o diretório inicial do meu usuário:

E138: Can't write viminfo file /Users/henrik/.viminfo!

A remoção de ~/.viminfo não corrigiu o erro.

Acontece que eu tinha um monte de arquivos temporários viminfo, e removê-los resolveu o problema:

 ls ~/.viminf*      # If you want to see the files.
 rm -rf ~/.viminf*  # Remove them.

Encontrou esta solução aqui .

    
por 23.08.2015 / 21:35
3

Recebi o mesmo erro ao tentar :wq um arquivo em um disco que estava completamente cheio. Se você receber esta mensagem, talvez queira verificar o espaço em disco disponível.

    
por 24.03.2015 / 00:50
2

Uma maneira muito mais limpa de criar um diretório home seria usar o esqueleto que o linux fornece para você, por exemplo.

sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae
    
por 03.02.2015 / 00:23
1

Para mim, o problema foi que eu mudei meu diretório home para o local dentro de uma montagem NFS. Por alguma razão, isso resultou no proprietário do diretório ser "nobody". Adicionar permissões de gravação para "outros" resolveu o problema, pois eu claramente não era o proprietário do arquivo.

chmod o+w ~/.viminfo
    
por 30.07.2017 / 10:41
0

O mais provável é que isso esteja acontecendo porque o diretório home ficou sem espaço em disco e qualquer nova operação do vim não pode gravar no arquivo .viminfo.

    
por 12.11.2015 / 03:16
0

Eu tive o mesmo problema ao atualizar o conteúdo do Makefile. Eu precisava de uma variável local e decidi nomear HOME , então entrei na linha HOME=2.154 . Isso faz com que a configuração vim-HOME seja substituída por um diretório não existente. Não use a variável HOME para outro uso.

    
por 26.09.2016 / 08:58
0

Acho que isso pode se aplicar apenas a versões muito antigas do linux / vi, mas o que eu descobri é que havia arquivos temporários no diretório pessoal da raiz com os nomes de arquivos /root/.viminfa.tmp ... /root/.viminfz .tmp e que havia 26 deles com timestamps cobrindo vários anos. Tínhamos ficado sem letras do alfabeto enquanto todos os a-z foram tirados. Eu removi todos esses arquivos e o problema desapareceu. Claro que Henrik %código% resolveria bem esse problema.

    
por 15.11.2017 / 18:08