V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guoqiao
V2EX  ›  Vim

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

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

    我有多个项目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   ·   实用小工具   ·   2671 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:53 · PVG 09:53 · LAX 17:53 · JFK 20:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.