Emacs:在dired中轻松导航图像?

时间:2013-11-08 14:19:05

标签: emacs elisp dired

当我在直接缓冲区中的图像上按 v 时,我想要eog - 样式导航。 我在网上搜索了一下,但没有找到任何直截了当的东西。 有image-dired,但缩略图不是我想要的。

我想要大多数文件类型已经存在的行为: dired中的 v 显示view-mode中的文件, 其中 n p q 做了显而易见的事。

我在dired-view-next附近攻击了一些东西,但我不知道是否 已经有一个好的工作包吗?

3 个答案:

答案 0 :(得分:5)

这已经在Emacs 24.4中得到修复。 IOW,它适用于Emacs 24的最新开发快照。

Dired中的

v正如您所要求的那样:它显示图像。然后npq执行您期望的操作:分别显示下一个或上一个文件(图像),然后退出。每个图像都显示在image-mode中,它将n等绑定到DTRT。

考虑从开发快照中获取image-mode.el code并将其添加到init文件中。不知道你是否需要摆弄一些代码,以便与Emacs 24.3(或者你正在使用的任何Emacs版本)配合使用。

答案 1 :(得分:1)

Image Dired,您可以运行image-dired-display-thumbnail-original-image。如果您修改了键映射,以便v运行image-dired-display-thumbnail-original-image,但这只会在另一个缓冲区中显示该图像。

您可以编写自定义次要模式,以便在打开图像时修改当前的dired模式。这种新模式将使图像在另一个缓冲区中打开,同时将光标保持在当前缓冲区中,并使np分别将光标和显示的图像移动到下一个/上一个图像。 q会让你退缩。但是,我不知道该怎么做。

答案 2 :(得分: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))))