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


20

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

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


실행할 때 결과를 게시 할 수 있습니까 ls .viminf*?
cuonglm 2016 년

viminfo 파일에 대한 권한은 무엇입니까? 출력은 ls -la .vininf*무엇입니까?
darnir

답변:


29

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

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

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

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


"편집기가 루트로 실행되지 않기 때문에 더 안전한 솔루션입니다. 플러그인이 무엇을하는지 모를 것입니다. "나는 모든 것을 생각했다고 믿었습니다 . 취약점이지만 잘못되었습니다.
bballdave025

14

모든 출구 에서이 오류가 발생했습니다. 나는 사용하지 않았다 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.

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


5

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


3

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

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

1
나는 ... 문제는 홈 디렉토리의 생성과는 거의 상관이있다 두려워
존 WH 스미스

vim이 .viminfo 파일에 저장하려면 홈 디렉토리를 작성해야하므로 위 명령을 적용 할 수 있습니다.
Rick

1
이러한 결론에 도달하기 전에이 파일이 존재하지 않는 수많은 이유가 있습니다. 홈 디렉토리가 없으면 파일이 누락 된 것보다 훨씬 많은 문제가 발생할 수 있습니다. 이러한 이유로 "홈 디렉토리 생성"으로 "누락 된 파일"질문에 대답 할 수 있습니다. :)
John WH Smith

1
+1 필자의 경우 홈 디렉토리가없는 사용자로 파일을 편집했기 때문에이 오류가 발생했습니다.
Zoltán

3

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

chmod o+w ~/.viminfo

1
답을 명확하게 설명해 주시겠습니까? 한 줄의 답변이 SE에서 좋은 것으로 간주되지 않음
Romeo Ninov

2
다른 쓰기 권한 을 추가하면 도움이 될 수 있습니다. 아마도 당신은 당신의 자신의 파일을 소유하지 않았습니까?
Jeff Schaller

이것은 나를 위해 작동합니다. 내 ".viminfo"가 "root"사용자에 의해 생성 된 것 같아서 "ubuntu"사용자가 수정하려고하면 쓰기 권한이 필요합니다. 간단히 말해서, "-rw-r--r--"는 "-rw-r--rw-"가됩니다.
emeraldhieu

0

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


3
그것은 조금 파문 인 것 같습니다 : 당신은 그것에 대한 증거가 있습니까?
jasonwryan

그것은 하나의 가능성입니다.
Ned64

0

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


1
참고 HOME미리 정의 된 환경 변수이며 그것 - 정의 다시는 일반적으로 좋은 생각이 아니다.
Barun

0

나는 이것이 꽤 오래된 버전의 linux / vi에만 적용될 수 있다고 생각하지만 내가 찾은 것은 파일 이름 /root/.viminfa.tmp ... /root/.viminfz.tmp와 함께 루트의 홈 디렉토리에 임시 파일이 있다는 것입니다. 몇 년 동안 타임 스탬프가있는 26 개가있었습니다. 우리는 모든 az가 취해 졌을 때 알파벳의 문자가 부족했습니다. 해당 파일을 모두 제거했는데 문제가 사라졌습니다. 물론 Henrik # rm -rf ~/.viminf* 는이 문제를 잘 해결할 것입니다.


0

환경 변수를 지우는 것 같습니다.

이 작업을 수행:

수출 HOME = / root

문제가 해결 될 것입니다.


0

sudo vim각 파일을 사용하여 파일을 여는 것을 기억하지 못 하므로이 시나리오를 어떻게 보았는지 잘 모르겠습니다.:q 파일에서 비슷한 'viminfo를 쓸 수 없습니다'라는 비슷한 메시지가 나타납니다.

rm ~/.viminfo그것을 해결하지 않고 ~/.vim/비어있었습니다.

chmod 666 ~/.viminfoVim에서 파일을 종료 할 때 해당 경고 메시지를 해결했습니다. 확실하지 않지만 이것이 최선의 해결책입니까? .viminfo가 rw ------ 이래로 경고가 중지 된 이유는 이해가되며 vim 명령 기록으로 작성되었다고 가정합니다.


0

내 시나리오는 /root/.viminfo파일이 전혀 없다는 것입니다 . 파일을 만지면 오류가 멈추고 vim을 종료 할 때 파일이 업데이트되었습니다. 추신 : 이것은 윈드 리버 임베디드 리눅스입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.