vim 的当前目录问题以及 ctrlp.vim 的正确用法

2015-02-14 13:09:49 +08:00
 guoqiao

我有多个项目p1, p2, ..., pn, 都存放在 ~/src 目录下.
当我要开发p1项目时, 我习惯在终端中用如下的方式打开p1文件夹:

cd src/p1
vim .

这时, 我希望 vim 的当前目录是 ~/src/p1
但实际上, 在 vim 里执行 :pwd 显示的结果是 ~/src

由于我使用 ctrlp.vim 查找文件, 这个问题会导致查找的范围是 src 下的所有文件, 而不是p1下的文件.

目前我不得不通过打开p1里的任意一个文件来避免这个问题, 例如:

cd src/p1
vim README.md

请问各位 ctrlp.vim 用户, 你们是如何解决这个问题的? 是我打开的姿势不对?

13761 次点击
所在节点    Vim
22 条回复
coderwang
2015-02-14 13:40:56 +08:00
nerdtree 默认打开,设置cd到src下
:cd p1
CD 目录树进到p1
yafeilee
2015-02-14 14:15:19 +08:00
正常行为下, pwd 就是当前路径打开 vim 时的路径.

楼主是不是配置了 vimrc 里面的当前路径?
lusyoe
2015-02-14 14:45:16 +08:00
你想要:CtrlPRoot这样的效果?
guoqiao
2015-02-14 15:11:48 +08:00
@yafeilee
我应该没有设置, 这里是我的 vim 配置:
https://github.com/guoqiao/vimx/blob/master/vimrc

@lusyoe
CtrlPRoot 是什么效果?
yakiang
2015-02-14 15:13:21 +08:00
和二楼一样,我显示的是 ~/src/p1
lusyoe
2015-02-14 15:15:38 +08:00
只显示当前目录下文件,不需要配置,你可以通过
:help CtrlP
/CtrlPRoot
查看说明
guoqiao
2015-02-14 15:26:12 +08:00
@lusyoe 只显示当前目录下文件不是我想要的.
我要的是查找当前项目的所有文件.
guoqiao
2015-02-14 15:34:24 +08:00
@yakiang 能否分享下你的 vim 配置?
lusyoe
2015-02-14 15:41:38 +08:00
试试:CtrlP r呢
guoqiao
2015-02-14 15:44:32 +08:00
@lusyoe 这里的问题其实并不在ctrlp身上, 只要 pwd 是对的, 它的工作是符合我的预期的.
问题在于, 我 cd ~/src/p1 然后 vim . 打开的应该是当前目录p1, 但是 vim 却认为我的当前目录是~/src
lusyoe
2015-02-14 15:52:56 +08:00
既然如此,为什么不将vim重装一次,看下问题是否还存在呢?若存在,则不是vim的问题;若不存在,然后一步一步安装插件添加配置,通过排除肯定是可以找到问题所在的。
guoqiao
2015-02-14 15:54:33 +08:00
@yafeilee
@yakiang
@lusyoe
找到了原因, 是NERDTree插件导致的. 如果禁用它, pwd 就是对的.
不过这个插件是必备的, 还不知道如何解决.
lusyoe
2015-02-14 16:04:12 +08:00
vim配置这东西不需要花费太大的心思,感觉没有太大的意义。我一直都是用spf13,经过绝大多数人去试验是没有太大问题的。。vim有些插件确实很容易起冲突
guoqiao
2015-02-14 16:17:50 +08:00
@lusyoe 我用过 spf13, 确实很不错. 不过我自己的配置更符合我的习惯, 使用的时候效率也更高一些.
drackzy
2015-02-14 17:36:44 +08:00
.vimrc加几行
nmap ,n :NERDTreeFind<CR>
nmap ,m :NERDTreeToggle<CR>
drackzy
2015-02-14 17:52:45 +08:00
刚才误按回车发错了
let g:NERDTreeChDirMode = 2
let g:ctrlp_working_path_mode = 'rw'
这个试了试好像可以了,ctrlp搜索目录和Nerdtree当前目录一样的了。
guoqiao
2015-02-14 18:03:20 +08:00
@drackzy 谢谢回答, 不过我的问题不在ctrlp这里.
我这里ctrlp 和 NERDTree 的搜索目录也是一样的, 没有问题.
问题在于, 当你cd 进入一个文件夹并用 `vim .` 的方式打开它, NERDTree会导致 pwd 指向上层目录, 这样 ctrlp 的搜索范围也不对了.问题根源并不在 ctrlp.
jason52
2015-02-14 19:37:16 +08:00
@guoqiao nerdtree为啥一定要呢,我感觉ctrlp差不多够用了,不过不是你的项目就不行了,因为目录结构不太熟练。
kran
2015-02-14 22:43:59 +08:00
善用lcd
ctrlp配置成 cmd .
nicai000
2015-02-14 23:24:49 +08:00
:autochdir ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/170930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX