Emacs 将图像插入文本缓冲区

Emacs 将图像插入文本缓冲区,emacs,insert-image,Emacs,Insert Image,如果我 (insert-image (create-image "/tmp/test.png")) 在缓冲区中,将光标放在最后一个括号后,用C-x C-e对其求值,然后图像/tmp/test.png显示在缓冲区中: 相当整洁。但是, 我不得不把最后一个括号放在另一行,这样图像 靠近缓冲器的左侧。有办法隐藏吗 (插入图像…文本 文本文件仅包含(插入图像…文本,而不包含 形象。我很高兴,但是有没有办法告诉emacs 自动将所有(插入图像…表达式替换为 它们相应的图像(在文件打开后)无需我在之后键

如果我

(insert-image (create-image "/tmp/test.png"))
在缓冲区中,将光标放在最后一个括号后,用
C-x C-e
对其求值,然后图像
/tmp/test.png
显示在缓冲区中:

相当整洁。但是,

  • 我不得不把最后一个括号放在另一行,这样图像 靠近缓冲器的左侧。有办法隐藏吗
    (插入图像…
    文本
  • 文本文件仅包含
    (插入图像…
    文本,而不包含 形象。我很高兴,但是有没有办法告诉emacs 自动将所有
    (插入图像…
    表达式替换为 它们相应的图像(在文件打开后)无需我在之后键入
    C-x C-e
    每个人

  • 如果您不想将文本(实际上是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表达式
    和上面的定义,或将其键入缓冲区并在其后面键入
    C-x C-e
    。然后,您可以使用
    M-x my insert image

    插入图像,具体取决于您想要实现的目标,您可以尝试以下方法之一:

    1。使用
    org模式
    作为缓冲区的主要模式。然后,您可以访问
    org模式
    格式化的所有功能,包括链接到图像文件并显示它们:

    an image without description
    [[file:/tmp/image.png]]
    
    an image with description
    [[file:/tmp/image.png][my description]]
    
    然后可以调用
    org toggle inline images
    (C-C-x C-v)以显示缓冲区中的图像(没有前缀参数,它将只显示没有描述的图像;如果提供前缀参数,它将显示所有图像)

    2。编写自己的elisp代码,将图像插入需要的位置,并将其放入
    eval
    局部伪变量中,以便在打开文件时调用。例如:

    foo
    <HERE>
    bar
    
    # Local Variables:
    #   eval: (progn (beginning-of-buffer)(search-forward "<HERE>")(insert-image (create-image "/tmp/image.png")))
    # End:
    
    foo
    酒吧
    #局部变量:
    #eval:(progn(缓冲区的开头)(向前搜索“”)(插入图像(创建图像)/tmp/image.png)
    #完:
    
    当然,您可以将elisp代码包装成一个整洁的函数,只需从
    eval
    局部变量调用它(这是一个更干净的变量,但强制您将函数定义放在其他地方,远离您的文件)

    看看内联图像次要模式。它是从Emacs-23,IIRC开始的


    M-x
    iimage模式

    插入图像实际上并没有将任何图像插入缓冲区以将其保存到磁盘上,而只是它的视觉表示。你没有提到目的。在组织模式下,您可以链接缓冲区中的图片,并根据需要显示它们,然后导出它们。这就是你要寻找的吗?我在寻找真正的内联图像——图像数据存在于emacs缓冲区中,可能是UUCoded,而不是指向包含图像数据的文件的指针。管理单独的文件是一件痛苦的事情。最好使用
    (defun my insert image(图像文件)(交互式“fImage file:”)(insert image(创建图像文件)))
    。或者如手册所述()(deimage测试图像((:type xpm:file“~/test1.xpm”)(:type xbm:file“~/test1.xbm”))(插入图像测试图像)+1:我不知道这种模式,但这绝对是一种方式:标准,而不是功能过剩。这里有一个回程机器链接到原始链接: