如果我放置
(insert-image (create-image "/tmp/test.png"))
在缓冲区中,将光标放在最后一个括号后面并用C-x C-e
进行评估,然后在缓冲区中显示图像/tmp/test.png
:
非常整洁。但是,
(insert-image ...)
文字?(insert-image ...)
文本,而不包含(insert-image ...)
文本
图片。我对此很满意,但有没有办法告诉emacs
自动替换所有C-x C-e
表达式
他们相应的图像(文件打开后),我不必在之后键入{{1}}
每一个?答案 0 :(得分:28)
根据您想要实现的目标,您可以尝试以下想法:
1。使用org-mode
作为缓冲区的主要模式。然后,您可以访问org-mode
格式的所有功能,包括链接到图像文件并显示它们:
an image without description
[[file:/tmp/image.png]]
an image with description
[[file:/tmp/image.png][my description]]
然后你可以调用org-toggle-inline-images
( Cc Cx Cv )来显示缓冲区中的图像(没有前缀参数,它只显示没有描述的图像;如果给出前缀参数,它将显示所有图像)
2。编写您自己的elisp代码以在您想要的位置插入图像,并将其放在eval
本地伪变量中,以便在打开文件时调用它。例如:
foo
<HERE>
bar
# Local Variables:
# eval: (progn (beginning-of-buffer)(search-forward "<HERE>")(insert-image (create-image "/tmp/image.png")))
# End:
您当然可以将elisp代码包装成一个简洁的函数,只需从eval
局部变量调用它(这是更干净,但强制您将函数定义放在其他地方,远离您的文件)< / p>
答案 1 :(得分:26)
查看内联图像次要模式iimage-mode
。它包含在Emacs-23,IIRC之后。
M-X iimage-mode
答案 2 :(得分:1)
如果您不想在缓冲区中使用文本(实际上是lisp代码),请不要首先将其输入缓冲区。尝试M-x eval-expression
并在Eval提示后输入您的lisp代码:
(insert-image (create-image "/tmp/test.png"))
然后将图像插入缓冲区中的点。您可以定义如下函数:
(defun my-insert-image () (interactive) (insert-image (create-image "/tmp/test.png")))
键入M-x eval-expression
和上面的defun,或者将其输入缓冲区,然后输入C-x C-e
。然后,您可以使用M-x my-insert-image
插入图像。