[unix] Vim 오류 E138 : viminfo 파일 $ HOME / .viminfo를 쓸 수 없습니다!

나는 다소 이상한 것을 겪을 까봐 두려워합니다. 파일을 정상적으로 열면 vim README.txt모든 것이 정상 입니다. 그러나에 sudo vim README.txt파일이 비어 E138: Can't write viminfo file $HOME/.viminfo!있으면 종료하려고 할 때 오류가 발생합니다.

.viminfo파일이 손상되었다고 의심되어 삭제했습니다. 이 문제는 남아 있습니다. 누구든지 도울 수 있습니까?



답변

실행할 때 sudo vimvim을 루트로 시작합니다. 이는 / root의 viminfo 파일이 문제라는 것을 의미합니다. 당신은해야 rm /root/.viminf*합니다.

이를 확인하려면 sudo vim다음 명령을 실행 하고 실행하십시오 :!echo $HOME.. 홈 디렉토리가 / root임을 표시합니다.

vim을 root로 실행하지 말고을 사용하는 것이 좋습니다 sudoedit. 편집기가 루트로 실행되지 않기 때문에보다 안전한 솔루션입니다. 당신은 플러그인이 무엇을 할 수 있는지 전혀 모른다. 또한 vim에서 루트 vimrc가 아닌 고유 한 설정 및 플러그인을 사용할 수 있습니다. sudoeditrunning과 동일합니다 sudo -e. sudoedit는 호출하는 사용자 (귀하)가 소유 한 파일의 임시 사본을 작성하여 작동합니다. 편집을 마치면 변경 사항이 실제 파일에 기록되고 임시 파일이 삭제됩니다.

일반적으로 필요하지 않은 경우 루트로 실행하지 마십시오.


답변

모든 출구 에서이 오류가 발생했습니다. 나는 사용하지 않았다 sudo. 내 사용자 홈 디렉토리를 명시 적으로 언급했습니다.

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

제거해 ~/.viminfo도 오류가 해결되지 않았습니다.

viminfo temp 파일이 많이 있고 그 파일을 제거하면 문제가 해결되었습니다.

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

이 솔루션을 여기 에서 찾았 습니다 .


답변

:wq디스크가 가득 찬 디스크에서 파일을 만들려고 할 때도 같은 오류가 발생했습니다 . 이 메시지가 표시되면 사용 가능한 디스크 공간을 확인하십시오.


답변

홈 디렉토리를 만드는 더 깨끗한 방법은 리눅스가 제공하는 스켈레톤을 사용하는 것입니다.

sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae


답변

나에게 문제는 홈 디렉토리를 NFS 마운트 내의 위치로 변경했다는 것입니다. 어떤 이유로 디렉토리 소유자는 “아무도 아닌 사람”이되었습니다. “other”에 대한 쓰기 권한을 추가하면 파일 소유자가 아닌 문제가 해결되었습니다.

chmod o+w ~/.viminfo


답변

홈 디렉토리에 디스크 공간이 부족하고 새로운 vim 조작이 .viminfo 파일에 쓸 수 없기 때문에 이런 일이 발생합니다.


답변

Makefile의 내용을 업데이트 할 때도 같은 문제가있었습니다. 로컬 변수가 필요하고 이름을 정하기로 결정 HOME했으므로 줄을 입력했습니다 HOME=2.154. 이로 인해 vim-HOME설정 이 존재하지 않는 디렉토리로 바뀝니다. HOME다른 용도로 변수를 사용하지 마십시오 .