我是很长时间的Emacs用户,但2年前部分切换到MacVim,并且已经将它用于我的所有编程工作(仍然使用Emacs进行其他工作)。我决定现在切换回Emacs,主要是因为真棒evil-mode
。我很高兴,但我仍然没有找到像Vim Command-T插件一样简单的东西。
Emacs替代方案的主要问题是它们太复杂或太慢。
与Command-T最接近的是helm
/ helm-cmd-t
,但它并不像它那样有效。
假设您有两条路径:
app/controllers/admin/feedback_controller.rb
app/controllers/fee_controller.rb
在Vim的Command-T中,你可以写:
app/controllers/fe
它将匹配两条路径。
使用helm-cmd-t
,如果我写app/controllers/fee
,则只会匹配fee_controller
。如果我想要同时匹配两者,我必须使用正则表达式,如app/controllers/.*
,这不是 错误,但需要更多按键。
任何建议都赞赏!
答案 0 :(得分:3)
使用ido的任何Emacs包都可以执行此操作,前提是ido-flex-match
为非零。 Helm-cmd -t deliberately doesn't support this kind of flexible matching。
您可以使用find-file-in-repository设置为ido-flex-match
时使用{{3}}获取您描述的行为。
答案 1 :(得分:3)
我最近开始使用flx
与ido-mode
和projectile
,它具有非常好的排名模糊匹配,并且与Vim的CtrlP和CmdT具有非常相似的感觉。< / p>
可以通过MELPA安装。
M-x package-install
flx
有关详细信息,请参阅flx project。
这是一个用来说明......的屏幕抓图。
答案 2 :(得分:2)
在这里,但首先需要安装helm:https://github.com/emacs-helm/helm-cmd-t
编辑:查看我的Helm guide。阅读why it is powerful。请参阅该部分中helm
并projectile
的操作。
在Vim中使用像Ido + flx之类的模糊搜索器,您必须按顺序键入 。 使用Helm,您可以执行乱序匹配。我无序调用它,因为无论我输入“main.c x86”还是“x86 main.c”,我都会获得相同的结果集任一查询。但将其称为多步搜索也是有意义的。 没有必须以有序的方式输入搜索字符串(称为“模式”,实际上是regexp),Helm给了我更大的自由:我可以在我的脑海中首先输入我想要的东西而不必记住它的复杂路径;如果我想要的目标中有很多候选人,我会通过更多细节(模式)进一步缩小范围。
以上例子从上述优势来说明两种情况:
正如您所看到的,Linux内核源代码树包含超过40kfiles,我立即将其缩小为几个文件。
Visual Studio也在项目搜索中实现了这种机制,但它不像Helm那样通用。在Helm中,您可以为许多其他事情重用相同的Helm界面;例如,请参阅helm-semantic-or-imenu
。你有类似大纲树的东西,但是你可以用一些简单的模式以交互方式逐渐缩小到你想要的候选者。
最后,fyi,flx
作者 - Le Wang--正在使用Helm。
答案 3 :(得分:1)
你试过LustyExplorer吗?它基于同名的Vim插件。
此外,您似乎没有充分利用Command-T:acfe
应该足以匹配这两个文件。你所做的并不比:e app/con*/**/fe<Tab>
特别好。
答案 4 :(得分:1)
答案 5 :(得分:1)
长话短说 - 没有什么比Emacs的命令-T更像了。最好的选择是gpicker或Peepcode的peepopen,但它们是外部应用程序,我发现它们在使用command-T这么长时间后会分散注意力。我现在坚持使用MacVim,只是因为命令-T,但是可能会考虑实现像command-T一样的行为。
谢谢大家的回答和评论!
答案 6 :(得分:0)
试试textmate.el :) https://github.com/defunkt/textmate.el
您只需使用“Command + T”而不是“Ctrl + P”:)
答案 7 :(得分:0)
https://github.com/bling/fzf.el
在我看来,这是最好的解决方案。这就是原因: