vim의 현재 작업 디렉토리가 vim이 시작된 곳과 다른 이유는 무엇입니까?

Aug 21 2020

vim은 명령 줄에서 vim을 시작한 것과 다른 현재 작업 디렉토리를 보여줍니다. .vimrc( vim -u NONE) 없이 실행하면 문제가 사라집니다 . 왜 이런 일이 발생하는지 알아 내기 위해 이것을 디버그하려면 어떻게해야합니까?

$ pwd /Users/rbednark/Dropbox/git/quizme_personal_files/bin $ vim --noplugin
:pwd 
/Users/rbednark/Dropbox/git/quizme_personal_files/bin
:edit settings.sh
:pwd 
/Users/rbednark/quizme-read-only-prod
(expected: 
  /Users/rbednark/Dropbox/git/quizme_personal_files/bin
 actual: 
  /Users/rbednark/quizme-read-only-prod
)

내 사용하지 않으면 문제가 사라집니다 .vimrc.

$ vim -u NONE

노트:

  • :set autochdir? 출력 noautochdir
  • :verbose set autochdir? 출력 noautochdir
  • :!pwd그리고 :pwd모두 출력 같은 디렉토리
  • 문제는 또한 vim --noplugin
  • 나는 최근 업그레이드 vimpython(통해 brew upgrade).
  • 나는 한 하지 내 변경 .vimrc(일부 의견을 추가하는 대신 다른) 최근합니다. 그것은 git에서 버전 관리하에 있으므로 이것이 유일한 변경 사항임을 확인했습니다.
  • 나는 설치 및 vundle (내 플러그인을 업데이트 :VundleInstall하고 :VundleUpdate).
  • 나는 내 일부 변경을 .bashrc내가 정력 동작을 변경 할 생각하지만, 아무것도.
  • 운영체제 : macOS Mojave 10.14.6
  • vim : 8.2 (2019 년 12 월 12 일, 2020 년 8 월 20 일 컴파일 22:44:15) Homebrew에서 편집

편집 : 처음에는 이것이 일 때문이라고 생각 :edit other-file했지만 이제는 단일 파일을 편집하여 볼 수 있으므로 불필요한 측면을 제거하기 위해 위의 내용을 변경했습니다.

답변

1 RobBednark Aug 23 2020 at 19:22

이유 : :lcd어느 시점에서 나는 s를 했고 버퍼를 나가고 들어갈 때 s를 .vimrc가지고 있으므로 파일을 다시 편집 하면 다른 디렉토리에 대해 수행됩니다.autocmdmkviewloadview:lcd

해결책 :

옵션 1- 현재 작업 디렉토리를 편집중인 파일의 디렉토리로 변경하고 다음을 저장합니다.

cd %:p:h
:wq

옵션 2- 해당보기 파일 제거, 예 :

$ rm ~/.vim/view/*myfile*

해결 / 디버깅 방법 : 파일을
양분 .vimrc하여 문제가되는 줄을 확인했습니다.

autocmd BufWinEnter * silent! loadview

그것은로드되는 뷰 때문이라는 것을 나타냅니다. 그런 다음에서 해당 view파일 을보고 ~/.vim/view디렉터리 이름을 검색하여 다음 줄을 생성했습니다.

lcd ~/quizme-read-only-prod

참고 항목 : 현재 파일 디렉터리와 다른 작업 디렉터리?