最近我的vim将改变当前目录,无论我做什么。我正在使用spf13发行版,当我在rails app根目录并且vi
时,我的pwd
将正确地位于应用程序根目录中。但是,一旦我打开某个文件,任何文件,它都会将pwd
更改为abosolute/path/to/myrailsapp/app/assets/stylesheets
,
当我的.vimrc中没有let g:spf13_no_autochdir = 1
时,vim会将pwd
更改为当前文件目录;当我这样做时,每当我打开文件时它都会变为样式表目录。
我也在使用rails.vim
。以下是我.vimrc
if !exists('g:spf13_no_autochdir')
autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif
" Always switch to the current file directory
endif
更新:
我想要的是:pwd
始终保持在absolute/path/to/myrailsapp/
,每当我打开文件时都不会自动更改为stylesheet
目录。
答案 0 :(得分:1)
我根据Ben's second answer解决了这个问题。
spf13加载配置文件in order as follows。
if !exists('g:spf13_no_autochdir')
检查在(7)完成,因此应在此之前加载let g:spf13_no_autochdir = 1
。
我把它放在.vimrc.before.local中,它按预期工作。
答案 1 :(得分:0)
有两种方法可以实现。
最有可能的是,这个“spf13”配置包括set autochdir
。要查明是否是这种情况,请正常启动Vim,然后键入:verbose set autochdir?
并按Enter键。这应该告诉你如果设置了autochdir并且WHICH FILE将它设置为该值。
如果设置了autochdir,那么你只需要设置一个VimEnter autocmd,或者在〜/ .vim / after / plugin中粘贴一个文件,在spf13加载后再将其关闭。
如果未设置autochdir,则可能是autocmd正在为您设置目录。如果SPF13中有一个插件选项将其关闭,那么就这样做。如果没有,您需要找到插件中的目录更改位置。如果你很幸运,autocmd将自己处于一个augroup中,然后你可以用:au! GroupName
删除那个autocmd。这个命令可以在同一个地方;一个VimEnter autocmd,或〜/ .vim / after / plugin中的文件。
答案 2 :(得分:0)
其实我刚刚找到并查看了该插件。我认为就是这样:
https://github.com/spf13/spf13-vim/blob/3.0/.vimrc
在第75行附近,您可以看到:
" Most prefer to automatically switch to the current file directory when
" a new buffer is opened; to prevent this behavior, add the following to
" your .vimrc.before.local file:
" let g:spf13_no_autochdir = 1
所以只需将最后一行(不带注释标记引用)添加到.vimrc中,您就可以摆脱自动目录更改。
我注意到我的其他答案中的方法都不起作用,因为插件作者无论出于何种原因决定不使用内置选项,也不将其autocmd放入组中。顽皮,顽皮!