上周,由于不得不应对R和Perl的不同IDE而感到激怒(我再也不喜欢或者使用其中的任何一个以获得非常舒适),我决定尝试使用Emacs.如果没有我的某种惶恐,就不会做出这个决定.我主要用于带有cperl的Perl和带有ESS的R.我的环境是Windows 7 Ultimate 64位,我正在运行v23.4.1,我认为这是代表我安装的ESS软件包.
差不多一个星期到目前为止,它已经令人惊讶地无痛,没有任何其他重要软件的参与.我已经将我的ctrl键重新映射到大写锁定,更改了默认文件夹,与.emacs混淆并添加了一些功能,如自动安装,yasnippet,颜色主题,冰柱和其他一些.显然,那里有一些非常复杂的东西.当然,基本Emacs的某些功能立即非常强大和有用,例如isearching up和down.总的来说,我感到惊喜和放心.
有一件事比我想象的还要粗糙,就是查找和打开文件的过程.在粗略阅读各种教程后,我得到了这个准魔法文件位置和文件名自动完成的图像.我的设置中的主目录有g:/ roaming/code/perl或g:/ roaming/code/R /等路径,但我经常需要分支到完全不同的路径,如g:/ pricingata/support files/sector/project01 /等等.
目前,当我需要使用不同的fork时,我会费力地删除文件路径,然后使用auto-complete深入到文件系统的那个分支.二十年前,它让我回到Amiga上运行bash shell.
我有什么期望?类似于(使用上面的示例)键入'project01'以立即跳到路径底部的文件夹中.出于某种原因,我在脑海中得到了Emacs预加载目录的想法.所以也许这是不现实的.
我的猜测是,我的困难可能源于我自己缺乏熟悉而不是Emacs的结构性缺陷,并导致我的问题.我不能抱怨没有足够的文件; 相反,有大量的信息,它是随意分散的.冰柱有类似的问题 - 如果有什么太多的话.
1)尝试在迷你缓冲区中打开文件或使用其他方法时,在文件树的不同分支周围移动的最佳策略是什么?是否有可用于从一个地方快捷方式到另一个地方的别名,还是可以指定要预加载的目录?人们只是光盘很多吗?或者我是从完全错误的角度来看这个并且需要采取不同的策略?
2)通过附加设置,可以通过前缀使用通配符等自动完成用于在(例如)project01中找到文件吗?我应该关注什么才能在这里变得更有效率?我没有利用像冰柱,任何东西等附加功能吗?
我意识到这些问题更加危险地关闭了没有明确答案的弃用类别.我的辩护是,在我承诺养成不良习惯或不良的长期解决方案之前,现阶段的一些提示/指导将受到欢迎,我怀疑这些答案将使其他可能正在考虑转换的人受益.如果有问题,我很乐意撤回或改写.
There appears to be many alternative Emacs auto completion mechanisms. Without an exhaustive search, the following come to mind: ido, auto-complete, icicles, in buffer completion, minibuffer completion and standard out of the box completion. And then there is code completion. Lots of it. And much of it language dependent. It would be very useful to have an Emacs guru, or three, summarize the benefits of the major players in both code and non-code auto-completion. And this being Stack Overflow, it …
我是一个大风扇ido-mode,以至于我想用它喜欢的东西describe-function或find-tag等等,而无需编写像在"我能得到IDO模式完成了在Emacs搜索标签?" 每一个人.
都
(defalias completing-read ido-completing-read)
Run Code Online (Sandbox Code Playgroud)
和
(setf 'completing-read 'ido-completing-read)
Run Code Online (Sandbox Code Playgroud)
不起作用,至少部分是因为它的主体ido-completing-read调用completing-read,所以任何简单的重新定义都会导致无限递归.
从理论上讲,它应该是可能的,因为文档字符串的第一行ido-completing-read是"Ido替换内置函数" completing-read.我环顾四周,似乎找不到任何试图或成功的人.
我意识到Icicles可能会提供类似这样的东西,无论如何我最终可能会继续这样做,但这比我现在想要的更多一点.
谢谢你的帮助.
我想为Emacs实现Resharper的"Go To File"功能.当按下提到的快捷方式时,Resharper弹出一个接受通配符字符串的文本框,并显示一个自动完成菜单,列出项目中与该通配符匹配的所有文件:
"转到文件"对话框http://www.jetbrains.com/resharper/features/screenshots/50/navigation_gotofile.png
就目前而言,我知道一种粗略的方式来实现或多或少等同的东西.它涉及运行diredwith -lR然后调用dired-isearch-filenames- 这将开始对某些根目录中的整个文件层次结构进行增量搜索.
UPD.我也知道打开缓冲区的选项,将它们全部保存在内存中并使用switch-to-buffer.这个解决方案可以很好地使用ido,但它不是100%防弹(如果添加或删除某些文件会怎么样?).它也不能很好地使用tabbar,因为选项卡将显示项目中包含的所有文件,但不会显示代表我当前上下文的项目的子集.
但是,这显示了许多不必要的信息,缺乏自动完成功能.我已经采取一看ido和icicles,但他们似乎只在当前目录下浅的工作.是否有Emacs插件可以帮助我实现目标?
有没有emacs模式会给我一个我的开放缓冲区列表作为树?通过树,我的意思是目录树,如果缓冲区访问位于同一目录中的文件,则将缓冲区组合在一起.
在vanilla emacs,甚至是冰柱模式中,我看到的缓冲区列表的视图都是平坦的.树视图可以帮助我更快地了解哪些缓冲区是打开的以及它们之间的关系.