TransWikia.com

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

Vi and Vim Asked by Rob Bednark on January 13, 2021

vim is showing a different current working directory than the one I started vim with from the command-line. The problem goes away if I run without my .vimrc (vim -u NONE). How can I debug this to figure out why this is happening?

$ 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
)

The problem goes away if I don’t use my .vimrc:

$ vim -u NONE

Notes:

  • :set autochdir? outputs noautochdir
  • :verbose set autochdir? outputs noautochdir
  • :!pwd and :pwd both output the same directory
  • The problem also occurs with vim --noplugin
  • I have recently upgraded vim and python (via brew upgrade).
  • I have not changed my .vimrc lately (other than adding some comments). It’s under version control in git, so I confirmed these have been the only changes.
  • I have installed and updated my plugins with vundle (:VundleInstall and :VundleUpdate).
  • I have made some changes to my .bashrc but nothing that I think would change vim behavior.
  • OS: macOS Mojave 10.14.6
  • vim: 8.2 (2019 Dec 12, compiled Aug 20 2020 22:44:15) Compiled by Homebrew

EDIT: I initially thought this was due to doing :edit other-file, but now I see it with just editing a single file, so I changed the above to remove that unnecessary aspect.

One Answer

Reason: I had done an :lcd at some point, and my .vimrc has autocmds to mkview and loadview when leaving and entering a buffer, so editing the file again was doing an :lcd to the other directory.

Solutions:

option 1 -- change the current working directory to the directory of the file being edited, and save:

cd %:p:h
:wq

option 2 -- remove the corresponding view file, e.g.,

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

How I solved / debugged:
I bisected my .vimrc file to determine the offending line, which was:

autocmd BufWinEnter * silent! loadview

That indicated it was due to a view that was getting loaded. I then viewed the corresponding view file in ~/.vim/view and searched for the directory name, which yielded this line:

lcd ~/quizme-read-only-prod

See also: Working directory different than current file directory?

Correct answer by Rob Bednark on January 13, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP