如何从emacs创建一个空文件,理想情况下是在一个直接缓冲区中?
例如,我刚刚以dired模式打开了一个Python模块,创建了一个新目录,在dired中打开了,现在需要__init__.py在目录中添加一个空文件.
如果我使用,C-x C-f __init__.py RET C-x C-s那么emacs不会创建该文件,因为没有对它进行任何更改.我必须输入文件,保存,删除我的输入,然后再次保存,以便工作.
谢谢
通常,当我在git中切换分支时,如果文件在emacs中打开,那么emacs会询问我是否要还原它们(因为它认为它们已在磁盘上更改),即使内容相同.
首先,如果磁盘上的内容与缓冲区中的内容相同,我想找到一种让emacs根本不问我的方法.
其次,我想要一个命令恢复(没有查询)我没有未保存更改的所有打开缓冲区,并向我查询那些确实有未保存更改的命令.
或者,我会接受有关其他解决方案,工作方式等方面的建议,我可以尝试.如果人们可以给我指点从哪里开始,我很高兴写emacs-lisp.
PS如果重要的话,我在OSX上使用Aquamacs.
编辑:
好吧,我发现revbuffs包几乎是我需要的.当然足以阻止我想尝试自己写任何新东西.(我将revbuff映射到Cmd-R,效果非常好.类似于其他Mac应用程序中的Cmd-R).
全局自动恢复模式将是一个非常好的解决方案,我希望我可以选择两个答案.我更喜欢revbuffs,仅仅是因为想要控制所发生的事情,可能是非理性的感觉.
我有点猜测,如果我从emacs中访问git,那么它可能会更容易处理,但我目前更喜欢通过命令行访问git.(我还没有使用emacs足够长的时间来使它成为我的操作系统).我会更彻底地调查magit.
EDIT2:
我已经使用magit一年了,并且强烈推荐它来处理emacs中的git.但是,每当我在emacs之外进行rebase时,我仍然会使用revbuff.
我想以函数中的字符串形式访问当前区域的内容.例如:
(concat "stringa" (get-region-as-string) "stringb")
Run Code Online (Sandbox Code Playgroud)
谢谢
埃德
Python文档清楚地说明了x==y调用x.__eq__(y).然而,似乎在许多情况下,情况正好相反.它记录了何时或为何发生这种情况,以及如何确定我的对象__cmp__或__eq__方法是否会被调用.
编辑:只是为了澄清,我知道这__eq__是在优先考虑__cmp__,但我不清楚为什么y.__eq__(x)被优先调用x.__eq__(y),当后者是文档状态将发生.
>>> class TestCmp(object):
... def __cmp__(self, other):
... print "__cmp__ got called"
... return 0
...
>>> class TestEq(object):
... def __eq__(self, other):
... print "__eq__ got called"
... return True
...
>>> tc = TestCmp()
>>> te = TestEq()
>>>
>>> 1 == tc
__cmp__ got called
True
>>> tc == 1
__cmp__ got called
True
>>>
>>> 1 == te …Run Code Online (Sandbox Code Playgroud) 假设我将我的Emacs窗口拆分为多个图块,例如:
---------------------------
| | |
| | |
---------------------------
| |
| |
---------------------------
Run Code Online (Sandbox Code Playgroud)
当我在瓷砖(也就是Emacs中的窗口)之间切换以编辑我的文件(例如使用C-x o)时,我可以通过在屏幕上直观地找到光标(点)并检查状态栏中的阴影区别来查看我在哪个瓷砖上.每个瓷砖:
但是,将光标定位在大屏幕上并不容易,并且光标所在状态栏上的阴影差异几乎可以忽略不计:
这是选择相应窗口时状态栏的样子:

这是未选择相应窗口时的样子(注意绿色有点暗)

以上是与颜色主题zenburn在GNU Emacs的23.3.1.
我的问题是:有没有办法让Emacs更清楚地指出哪个窗口/磁贴/缓冲区是具有焦点的窗口/磁贴/缓冲区?
在Emacs中,如何轻松复制与特定正则表达式匹配的所有行?最好在我输入时突出显示匹配的行.
occur 通过将它们复制到缓冲区来获得中途,但它增加了许多额外的东西.
如何获得可以在Emacs Lisp中使用的非交互功能的完整列表?
交互式的很容易在帮助系统中找到,但我想要一个完整的列表,列出我可以使用的所有其他功能.例如concat,car,cdr等.(并优选用文档).
谢谢
埃德
编辑:回答感谢Jouni.我对他的答案进行了一些调整,然后对结果进行排序(使用他的代码结果来帮助我找到正确的排序函数!)
(flet ((first-line (text)
(if text
(substring text 0 (string-match "\n" text))
"")))
(let ((funclist (list)))
(mapatoms
(lambda (x)
(and (fboundp x) ; does x name a function?
(not (commandp (symbol-function x))) ; is it non-interactive?
(subrp (symbol-function x)) ; is it built-in?
(add-to-list 'funclist
(concat (symbol-name x) " - " (first-line (documentation x))
"\n")))))
(dolist (item (sort funclist 'string<))
(insert item))))
Run Code Online (Sandbox Code Playgroud) 我想将光标固定在屏幕的中心线上,这样当我按Ctrl-N或Ctrl-P时,页面本身会向上或向下移动,光标会保持不动.
有没有人有任何关于如何实现这一目标的提示?
谢谢
埃德
如何在OS X上以多tty模式使emacs 23正常工作?
我已添加(server-start)到我的.emacs中,并发现运行/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n ~/myfile.txt会在我的emacs.app中打开它,但它不会将emacs带到前面.
那么,当我运行emacsclient时,如何让emacs.app出现在前面呢?(我考虑过编写一个函数,每次打开文件时将当前帧放在前面,或者编写一个Applescript来执行类似的工作,可以在emacsclient的同时调用)
emacs.app中的emacsclient是最好用的吗?我假设如果是这样我会写一个别名,但是使用它而不是/ usr/local/bin中的东西似乎很奇怪
有没有人得到任何其他提示或例子让这个工作?
在Emacs(Mac Leopard上的23个)中,我发现了如何使用hl-line-mode突出当前行,但是当在所有缓冲区中全局使用它时,它会突出显示所有帧中所有缓冲区中的当前行.
我希望能够仅在当前活动的缓冲区中突出显示当前行(或者至少有一个不同的面).我确信这在某种程度上是可能的,因为光标的变化取决于缓冲区是否是当前缓冲区.
谢谢
Singletoned
在python中,以下工作正常:
def test_foo():
class Foo(object):
pass
class Fam(object):
bar = Foo
test_foo()
Run Code Online (Sandbox Code Playgroud)
但是,以下内容失败NameError: name 'Foo' is not defined:
def test_foo():
class Foo(object):
pass
class Fam(object):
Foo = Foo
test_foo()
Run Code Online (Sandbox Code Playgroud)
为什么这个名字,我分配到影响多数民众赞成被分配值的查找?
emacs ×10
elisp ×5
python ×3
lisp ×2
aquamacs ×1
comparison ×1
dired ×1
file ×1
function ×1
git ×1
macos ×1
namespaces ×1
region ×1
salt-stack ×1
scroll ×1