如何快速更改VIM中的目录?

时间:2014-03-09 09:22:28

标签: shell vim

是否可以让vim与另一个使用它的工具一起工作? CtrlP具有目录搜索的限制。我唯一能找到的就是像wcd这样的工具。

但是,当我尝试将vim集成到任何更改目录(诺顿更改目录克隆)时,我会遇到一些基本问题。

wcd是一个简单的实用程序,如果找到一个在其名称中包含输入的匹配目录,则会获取输入和更改目录。如果有多个目录,它将提供一个简单的选择菜单,您可以从中选择所需的目录。它还可以使用-o选项将目录作为管道输出的输出。

Example $wcd foo : Changes to /home/me/foo . [Since only 1 foo exists]
        $wcd bar : 1./home/me/bar/
                  2./home/me/simplebar/
                  Enter You Choice: 

终端可以正常使用。想知道如何让vim使用这个实用程序。

如果我给出两种情况:cd wcd foo

  1. 如果我的目录中只有foo并且vim更改

  2. ,它可以为foo提供一个结果
  3. 它可以提供多种选择,我必须选择其中一种。请问vim会这么做吗?

  4. 棘手的是vim必须只允许该程序运行并完成然后获取输出 - 即使这意味着打开该程序等待用户输入。 vim应该去背景!命令会显示一个控制台。

    有人知道是否可以:cd !wcd foo吗?或同等学历 ?

4 个答案:

答案 0 :(得分:2)

由于您修改了自己的问题,我还有另一个选项https://github.com/kien/ctrlp.vim,请查看

let g:ctrlp_working_path_mode = 0

编辑:

所以你为你的任务选择了一个非常具有误导性的问题:)你可以使用带有args的ctrlp,为什么不将它绑定到映射?或使用fuzzyfinder?

当你在项目上工作时,你可以而且应该设置“工作目录”,但是你不应该在vim中打开特定目录,编辑具体文件。 也许你可以抓住fasd生成的文件(当然是自动生成),并自动为最常用的目录生成一些映射,但我认为这是一个坏主意。

我个人使用fasd + ctrlp成功了很长时间,我从不需要在vim中打开一个特定的目录,除了设置工作目录,ctrlp自动为我做什么。但我只是一个小开发者,也许你的用例是不同的。

编辑第二部分:

你的选择是

:h inputlist

检查一下:

:echo inputlist(range(20))

你需要用你的命令替换range20,并在那里传递带有args的wcd。

答案 1 :(得分:2)

命令行完成和“wildmenu”是你的朋友。

您可以使用***

之类的全局内容
:cd **/foo<tab>
:cd **/*bar<tab>

请参阅:help starstar

使用以下选项

set wildmenu
set wildignorecase
set wildmode=list:full

这是尝试:cddete目录下包含~/.vim的目录时的样子:

:cd **/*dete<Tab>

<Tab>

您实际上并不需要插件或外部实用程序。

答案 2 :(得分:1)

如果你在shell的模糊路径上查找运行vim的选项,请在页面上结帐https://github.com/clvv/fasd,解释vim的用法。

如果您只想使用vim作为输入管道,请使用短划线:

tail -1000 /some/file | vim -

答案 3 :(得分:1)