vim 的当前目录问题以及 ctrlp.vim 的正确用法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guoqiao
V2EX    Vim

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

  •  
  •   guoqiao 2015-02-14 13:09:49 +08:00 14054 次点击
    这是一个创建于 3895 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有多个项目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 用户, 你们是如何解决这个问题的? 是我打开的姿势不对?

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

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

    @lusyoe
    CtrlPRoot 是什么效果?
    yakiang
        5
    yakiang  
       2015-02-14 15:13:21 +08:00
    和二楼一样,我显示的是 ~/src/p1
    lusyoe
        6
    lusyoe  
       2015-02-14 15:15:38 +08:00 via Android
    只显示当前目录下文件,不需要配置,你可以通过
    :help CtrlP
    /CtrlPRoot
    查看说明
    guoqiao
        7
    guoqiao  
    OP
       2015-02-14 15:26:12 +08:00
    @lusyoe 只显示当前目录下文件不是我想要的.
    我要的是查找当前项目的所有文件.
    guoqiao
        8
    guoqiao  
    OP
       2015-02-14 15:34:24 +08:00
    @yakiang 能否分享下你的 vim 配置?
    lusyoe
        9
    lusyoe  
       2015-02-14 15:41:38 +08:00 via Android
    试试:CtrlP r呢
    guoqiao
        10
    guoqiao  
    OP
       2015-02-14 15:44:32 +08:00
    @lusyoe 这里的问题其实并不在ctrlp身上, 只要 pwd 是对的, 它的工作是符合我的预期的.
    问题在于, 我 cd ~/src/p1 然后 vim . 打开的应该是当前目录p1, 但是 vim 却认为我的当前目录是~/src
    lusyoe
        11
    lusyoe  
       2015-02-14 15:52:56 +08:00 via Android   1
    既然如此,为什么不将vim重装一次,看下问题是否还存在呢?若存在,则不是vim的问题;若不存在,然后一步一步安装插件添加配置,通过排除肯定是可以找到问题所在的。
    guoqiao
        12
    guoqiao  
    OP
       2015-02-14 15:54:33 +08:00
    @yafeilee
    @yakiang
    @lusyoe
    找到了原因, 是NERDTree插件导致的. 如果禁用它, pwd 就是对的.
    不过这个插件是必备的, 还不知道如何解决.
    lusyoe
        13
    lusyoe  
       2015-02-14 16:04:12 +08:00 via Android
    vim配置这东西不需要花费太大的心思,感觉没有太大的意义。我一直都是用spf13,经过绝大多数人去试验是没有太大问题的。。vim有些插件确实很容易起冲突
    guoqiao
        14
    guoqiao  
    OP
       2015-02-14 16:17:50 +08:00
    @lusyoe 我用过 spf13, 确实很不错. 不过我自己的配置更符合我的习惯, 使用的时候效率也更高一些.
    drackzy
        15
    drackzy  
       2015-02-14 17:36:44 +08:00
    .vimrc加几行
    nmap ,n :NERDTreeFind<CR>
    nmap ,m :NERDTreeToggle<CR>
    drackzy
        16
    drackzy  
       2015-02-14 17:52:45 +08:00
    刚才误按回车发错了
    let g:NERDTreeChDirMode = 2
    let g:ctrlp_working_path_mode = 'rw'
    这个试了试好像可以了,ctrlp搜索目录和Nerdtree当前目录一样的了。
    guoqiao
        17
    guoqiao  
    OP
       2015-02-14 18:03:20 +08:00
    @drackzy 谢谢回答, 不过我的问题不在ctrlp这里.
    我这里ctrlp 和 NERDTree 的搜索目录也是一样的, 没有问题.
    问题在于, 当你cd 进入一个文件夹并用 `vim .` 的方式打开它, NERDTree会导致 pwd 指向上层目录, 这样 ctrlp 的搜索范围也不对了.问题根源并不在 ctrlp.
    jason52
        18
    jason52  
       2015-02-14 19:37:16 +08:00
    @guoqiao nerdtree为啥一定要呢,我感觉ctrlp差不多够用了,不过不是你的项目就不行了,因为目录结构不太熟练。
    kran
        19
    kran  
       2015-02-14 22:43:59 +08:00 via iPhone
    善用lcd
    ctrlp配置成 cmd .
    nicai000
        20
    nicai000  
       2015-02-14 23:24:49 +08:00   1
    :autochdir ?
    nicai000
        21
    nicai000  
       2015-02-14 23:25:13 +08:00
    @nicai000 :set autochdir
    guoqiao
        22
    guoqiao  
    OP
       2015-02-15 04:36:13 +08:00
    @nicai000
    我的配置里已经set autochdir了.
    经你提醒, 注释掉这行后, 问题解决了.
    原来是autochdir导致NERDTree出现此问题.
    多谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1130 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 23:12 PVG 07:12 LAX 16:12 JFK 19:12
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86