Perché la directory di lavoro corrente in vim è diversa da quella in cui è stato avviato vim?
vim mostra una directory di lavoro corrente diversa da quella con cui ho avviato vim dalla riga di comando. Il problema scompare se corro senza il mio .vimrc
( vim -u NONE
). Come posso eseguire il debug di questo per capire perché sta accadendo?
$ 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
)
Il problema scompare se non utilizzo il mio .vimrc
:
$ vim -u NONE
Appunti:
:set autochdir?
uscitenoautochdir
:verbose set autochdir?
uscitenoautochdir
:!pwd
ed:pwd
entrambi generano la stessa directory- Il problema si verifica anche con
vim --noplugin
- Io ho recentemente aggiornato
vim
epython
(viabrew upgrade
). - Ho Non cambiato
.vimrc
ultimamente (altro che aggiungere qualche commento). È sotto il controllo della versione in git, quindi ho confermato che queste sono state le uniche modifiche. - Io ho installato e aggiornato miei plugin con vundle (
:VundleInstall
e:VundleUpdate
). - Io ho apportato alcune modifiche al mio
.bashrc
ma nulla che penso che avrebbe cambiato il comportamento vim. - Sistema operativo: macOS Mojave 10.14.6
- vim: 8.2 (12 dicembre 2019, compilato il 20 agosto 2020 22:44:15) Compilato da Homebrew
EDIT: inizialmente pensavo che fosse dovuto al fatto :edit other-file
, ma ora lo vedo solo modificando un singolo file, quindi ho modificato quanto sopra per rimuovere quell'aspetto non necessario.
Risposte
Motivo : mi aveva fatto un :lcd
certo punto, e la mia .vimrc
ha autocmd
s per mkview
e loadview
quando si lascia e inserendo un buffer, in modo da modificare il file di nuovo stava facendo una :lcd
per l'altra directory.
Soluzioni:
opzione 1 - cambia la directory di lavoro corrente nella directory del file in fase di modifica e salva:
cd %:p:h
:wq
opzione 2 : rimuovi il file di visualizzazione corrispondente, ad es.
$ rm ~/.vim/view/*myfile*
Come ho risolto / eseguito il debug:
ho diviso in due il mio .vimrc
file per determinare la linea incriminata, che era:
autocmd BufWinEnter * silent! loadview
Ciò indicava che era dovuto a una vista che veniva caricata. Ho quindi visualizzato il view
file corrispondente ~/.vim/view
e ho cercato il nome della directory, che ha prodotto questa riga:
lcd ~/quizme-read-only-prod
Vedi anche: Directory di lavoro diversa dalla directory file corrente?