我有一个非emacs全局搜索和替换功能,使我的磁盘文件比我的emacs缓冲区(整体)更新.有没有办法告诉emacs一次刷新磁盘上的所有缓冲区,而不是通过重新加载文件单独完成每个缓冲区?
谢谢!d
通常情况下,我已经挖掘了apropos和docs寻找类似以下内容的东西,只是为了放弃回到手头的任务:
(重复-最后命令)
执行我刚刚执行的最后一个C或M命令(要反弹到fn键)
或有时相关:
(形容 - 最后功能)
我错误地发出了什么击键,其效果我想加入我的技巧.describe-key很接近,但需要知道我键入的内容.
我只是从我可信赖的伙伴那里问过多吗?
我一直在使用Rsense更新我的emacs配置,以允许在键入代码时出现自动完成下拉框.这在大多数文件中运行良好,除了我发现当我在ruby on rails项目中编辑一些代码时,它不允许我从表中选择答案.
这是我的设置:https: //github.com/map7/simple_emacs
我在Ubuntu 10.04下使用它.
对于简单的ruby脚本文件,它工作得很好.我可以打开一个新文件并输入.
"test".up...
Run Code Online (Sandbox Code Playgroud)
就像我输入'p'字符一样,出现了一个选项列表,我可以用箭头键在列表中上下移动,然后用回车键选择一个(例如:upcase).
什么不起作用是当我做一个完全相同的测试,但在rails项目的基本目录中.
更新:
发现问题在于(需要'rails),所以在emacs-rails插件中,自动完成不喜欢它.
更新:
它位于emacs-rails - > rails-project.el中.如果我评论这个宏,那么自动完成工作,否则它不会:
(defmacro* rails-project:with-root ((root) &body body)
"If you use `rails-project:root' or functions related on it
several times in a block of code, you can optimize your code by
using this macro. Also, blocks of code will be executed only if
rails-root exist.
(rails-project:with-root (root)
(foo root)
(bar (rails-core:file \"some/path\")))
"
`(let ((,root (rails-project:root)))
(when ,root
(flet ((rails-project:root () ,root))
,@body))))
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么这会打破自动完成吗?
我决定查看Emacs,我非常喜欢它.现在,我正在使用Emacs入门套件,它提供了更好的默认设置和一些很好的自定义默认安装的Emacs.
我已经定制了一点,添加了一些东西,如yasnippet,颜色主题,未绑定和其他东西.我已经设置了一个github存储库,我保留了所有的自定义设置,这样我就可以从多个地方访问它们,或者万一我的.emacs.d目录丢失了.
所有这一切都非常好,但是有一个问题:Emacs大约需要1-2秒才能加载.AFAIK我可以使用Mx byte-compile-file编译单个.el文件到.elc,它可以工作.但是有很多.el文件,我想知道是否有办法用简单的命令或其他东西编译它们,以加快Emacs的加载速度.我的Emacs并不总是打开,我经常打开和关闭它,特别是在我将其设置为Total Commander中的编辑命令的默认编辑器以便更快地习惯它(是的,windows xp这里).
我的Emacs版本是22.3.是的,没有任何自定义的默认Emacs安装会立即启动.
我不确定在加载时,首选哪个版本,.el或编译.elc的方式是Oo
那么,是否有一个elisp命令或Emacs命令行开关使Emacs在.emacs.d目录中进行字节编译?
什么是实现代码折叠或org-mode使用的循环类型的最佳方式.在elisp中创建这种行为的最佳解决方案是什么?
编辑:对不起,我不清楚.我想在elisp中编写一些与代码折叠非常相似的东西,或者实际上最像org-mode的层次结构可以扩展.我想知道实现这种影响的最佳方法.我想我听过emacs叠加是一个很好的解决方案,但我不知道.
就折叠而言,我只使用内置的set-selective-display
编辑号2:
谢谢你的答案,但我想我问的是错误的问题,所以让我试着更清楚我想要做什么.我想创建以下内容
当你把你的观点放在一个函数上并调用这个elisp函数时,它将把函数定义放在任何地方(我只想使用find-tag)并在当前缓冲区展开它.我的想法是,如果你必须跳转到不同的缓冲区来读取函数定义,我觉得它的上下文切换到另一个文件.所以我希望它表现得像代码折叠只是它从缓冲区拉入外部代码.这会带来一些问题,因为它无法将代码实际粘贴到缓冲区中,或者如果有人保存它,它将保存拉入的代码.所以我想知道是否有办法在缓冲区内创建一个也不属于缓冲区的区域.我认为这是有道理的.
我正在尝试检测我正在启动emacs的屏幕大小,并相应地调整它开始的窗口的大小和位置(我猜这是emacs中的框架).我正在尝试设置我的.emacs,以便我总是得到一个"相当大"的窗口,它的左上角靠近屏幕的左上角.
我想这对于一般情况来说是一个很大的问题,所以为了缩小范围,我对Windows和(Debian)Linux上的GNU Emacs 22最感兴趣.
我需要获取我正在使用emacs编辑的文件的完整路径.
我正在使用Mac OS X和Aqumacs.
(setq filepath (get-fullpath-current-file)) ???
(copy-to-clipboard 'filepath) ???
Run Code Online (Sandbox Code Playgroud)
(defun show-file-name () "Show the full path file name in the minibuffer." (interactive) (message (buffer-file-name)) (kill-new (file-truename buffer-file-name)) ) (global-set-key "\C-cz" 'show-file-name)
结合我得到的两个答案,我可以得到我想要的.谢谢你的回答.还有一些问题.
这可能是一个愚蠢的问题,但我找不到直接解决方案.我经常想要解开窗口,如下所示
+--------------+-------------+ +--------------+-------------+
| | | | | |
| | | | | |
| | | | | |
+--------------+ | --> | | |
| | | | | |
| | | | | |
| | | | | |
+--------------+-------------+ +--------------+-------------+
+--------------+--------------+ +-----------------------------+
| | | | |
| | | | |
| | | | |
+--------------+--------------+ --> +-----------------------------+
| | | |
| | | |
| | | |
+-----------------------------+ …
Run Code Online (Sandbox Code Playgroud) 这是做什么的?
(add-hook 'compilation-mode-hook #'my-setup-compile-mode)
Run Code Online (Sandbox Code Playgroud)
......和它有什么不同
(add-hook 'compilation-mode-hook 'my-setup-compile-mode)
Run Code Online (Sandbox Code Playgroud)