为什么 vim 中的当前工作目录与 vim 的启动目录不同?

Why is current working directory in vim different from where vim was started?

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

备注:

编辑: 我最初认为这是由于 :edit other-file 造成的,但现在我只编辑了一个文件就看到了,所以我更改了上面的内容以删除那个不必要的方面。

原因:我在某个时候做了 :lcd,我的 .vimrcautocmdmkviewloadview 在离开和进入缓冲区时,因此再次编辑文件是对另一个目录执行 :lcd

解法:

option 1 -- 将当前工作目录更改为正在编辑文件的目录,并保存:

cd %:p:h
:wq

option 2 -- 删除相应的视图文件,例如

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

我是如何解决/调试的:
我将 .vimrc 文件一分为二以确定违规行, 这是:

autocmd BufWinEnter * silent! loadview

这表明这是由于正在加载视图。然后我在 ~/.vim/view 中查看了相应的 view 文件并搜索了目录名称,这产生了这一行:

lcd ~/quizme-read-only-prod

另请参阅:https://vi.stackexchange.com/questions/11903/working-directory-different-than-current-file-directory