是否可以让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
如果我的目录中只有foo
并且vim更改
foo
提供一个结果
它可以提供多种选择,我必须选择其中一种。请问vim会这么做吗?
棘手的是vim必须只允许该程序运行并完成然后获取输出 - 即使这意味着打开该程序等待用户输入。 vim应该去背景!命令会显示一个控制台。
有人知道是否可以:cd !wcd foo
吗?或同等学历 ?
答案 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
这是尝试:cd
到dete
目录下包含~/.vim
的目录时的样子:
:cd **/*dete<Tab>
您实际上并不需要插件或外部实用程序。
答案 2 :(得分:1)
如果你在shell的模糊路径上查找运行vim的选项,请在页面上结帐https://github.com/clvv/fasd,解释vim的用法。
如果您只想使用vim作为输入管道,请使用短划线:
tail -1000 /some/file | vim -
答案 3 :(得分:1)
Wcd有一个Vim插件。请参阅:http://vim.sourceforge.net/scripts/script.php?script_id=191