Emacs:如何在Dired中轻松导航图片?

5
当我在dired缓冲区中按下图片的v键时,我希望出现类似于eog的导航。 我已经在网上搜索了一些,但没有找到直截了当的方法。虽然有image-dired,但缩略图并不是我想要的。
我想要的是大多数文件类型已经存在的行为方式: 在dired中按下v显示文件的视图模式view-mode, 其中npq做的是显而易见的事情。
我修改了一些dired-view-next的东西,但我想知道是否已经有一个很好的包可以实现这个功能?

我在Emacs上没有dired-view-next,你用的是哪个版本?你使用了一些特殊的dired-mode扩展吗? - Rémi
3个回答

5
这个问题已经在即将发布的Emacs 24.4中得到解决。换句话说,在Emacs 24的最新开发快照中,它可以正常工作。
在Dired中,v命令可以按你的要求显示图像。然后,npq分别执行你所期望的操作:显示下一个或上一个文件(图像),以及退出。每个图像都在image-mode中显示,该模式绑定了n等命令。
考虑从开发快照中获取image-mode.el代码,并将其添加到您的初始化文件中。不知道是否需要调整一些代码,以便与您使用的Emacs 24.3(或其他版本)良好地配合使用。

1

Image Dired,您可以运行image-dired-display-thumbnail-original-image。如果您修改按键映射,使得v运行image-dired-display-thumbnail-original-image,那么它只会在另一个缓冲区中显示图像。

您可以编写一个自定义的小模式,当您打开一个图像时,它会修改当前的dired模式。这个新模式会在另一个缓冲区中打开图像,同时保留光标在当前缓冲区中,并使np分别移动光标和显示的图像到下一个/上一个图像。q将会带您回到之前的缓冲区。不过,我不知道怎样做。


查看图像不是问题。即使没有“image-dired”,它也可以直接使用,而我也不需要缩略图。问题在于导航无法正常工作。 - abo-abo
啊哈,我第一次没有理解,那是一个相当困难的问题。 - Squidly

0

我在这里放置我的代码,以防没有更好的等价物。 它的功能正是我想要的,但实现有点愚蠢:

(defmacro image-view (direction)
  `(lambda ()
     (interactive)
     (quit-window)
     (let ((pt (point))
           filename)
       (or (ignore-errors
             (catch 'filename
               (while (dired-next-line ,direction)
                 (when (image-type-from-file-name
                        (setq filename (dired-get-filename)))
                   (throw 'filename filename)))))
           (goto-char pt))
       (dired-view-file))))

(eval-after-load "image-mode"
  '(progn
    (define-key image-mode-map "n" (image-view 1))
    (define-key image-mode-map "h" (image-view -1))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接