修改
情景发生了变化。对不起,发布问题有点太早了。
打开文件(vim filename.ext
或:e filename.txt
等)时,当CWD为~/Sites/A
时,vim会更改为另一个CWD(~/Sites/B
)。
我发现,由于我的~/.vim/view/
文件夹中有一个名为~=+Sites=+B=+src=+filename.txt=
的文件,vim会这样做。
~/.vim/view/
内的文件包含:
let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
argglobal
setlocal fdm=manual
setlocal fde=0
setlocal fmr={{{,}}}
setlocal fdi=#
setlocal fdl=0
setlocal fml=1
setlocal fdn=20
setlocal fen
silent! normal! zE
let s:l = 200 - ((13 * winheight(0) + 11) / 23)
if s:l < 1 | let s:l = 1 | endif
exe s:l
normal! zt
200
normal! 030|
lcd ~/Sites/B
let &so = s:so_save | let &siso = s:siso_save
doautoall SessionLoadPost
" vim: set ft=vim :
为什么行lcs ~/Sites/B
代表此文件?内部~/Sites/B
从未存在名为filename.ext
的文件。
为了完整起见,在我本地化错误之前,这是我的问题:
当我在位于~/Sites/a
的代码库中vimgrep(例如:vimgrep DateCell src/**/*
)时,vim的当前工作目录会更改为另一个目录~/Sites/B
。
对vimgrep
或其他work-directory-aware命令的每次后续调用都会失败或返回错误的结果,因为它在~/Sites/B
目录中运行。
是什么导致这种情况?
我做了什么,以实现错误/错误行为:
cd ~/Sites/A
vim
vimgrep something src/**/*
:!pwd
显示~/Sites/B
:quit
pwd
显示~/Sites/A
修改
事实证明,如果我不使用vimgrep
,目录也会发生变化。我仍然不知道产生错误的原因。
BTW:它始终是同一个目录(~/Sites/B
),vim更改为。无论我在哪个目录工作。
Vim版本:8.0.2
操作系统版本:OS X 10.10.5
答案 0 :(得分:0)
~=+Sites=+B=+src=+filename.txt=
是~/Sites/B/src/filename.txt
的已保存视图。问题是:当你从另一个目录中打开一个文件(具有相同的名称,或者任何,从你的问题中不完全清楚)时,为什么会加载它?
通常,必须手动创建和恢复视图。您似乎在配置中有一些内容(:autocmd
)自动恢复已保存的视图,并且其路径查找中存在错误(或者,您的文件系统不太可能被搞砸了你有符号链接)。找到它,并将其关闭/修复它。