将图像插入文本缓冲区

时间:2012-03-20 01:04:04

标签: emacs insert-image

如果我放置

(insert-image (create-image "/tmp/test.png"))

在缓冲区中,将光标放在最后一个括号后面并用C-x C-e进行评估,然后在缓冲区中显示图像/tmp/test.png

enter image description here

非常整洁。但是,

  1. 我必须将最后一个括号放在一个单独的行上,所以图像 靠近缓冲区的左侧。有没有办法隐藏 完全是(insert-image ...)文字?
  2. 文本文件仅包含(insert-image ...)文本,而不包含(insert-image ...)文本 图片。我对此很满意,但有没有办法告诉emacs 自动替换所有C-x C-e表达式 他们相应的图像(文件打开后),我不必在之后键入{{1}} 每一个?

3 个答案:

答案 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插入图像。