【问题标题】:define keybinding for dired to run a command ("open ") on the file under the cursor为 dired 定义键绑定以在光标下的文件上运行命令(“open”)
【发布时间】:2013-11-23 08:52:46
【问题描述】:

我想停止在 OSX 中使用 finder 并改用 dired。 OSX 有一个命令“open”,可以从 cli 打开默认应用程序中的任何文件。 (例如:“打开 $the_file”)。这适用于 C-!然后我输入“打开”,但我想用一个组合键来做这两件事,比如 C-0。

如何创建一个相当于“C-!”的函数-> 当我将光标放在文件路径上按 C-0 时“打开”?

(编辑:我找到了解决方案,宏!)

【问题讨论】:

    标签: macos emacs elisp dired


    【解决方案1】:

    我在每个示例的末尾将lawlist-filename 重置为nil,以便它可以用于各种其他功能,包括但不限于dired-read-file-namedired-read-file-name: pop-up dired mode to read-file-name

    编辑:在@phils 的帮助下重写——使用let 绑定,而不是全局变量。

    (eval-after-load "dired" '(progn
    
      ;; open anything externally with OSX default app -- Wide-Open-Throttle!
      (define-key dired-mode-map (kbd "z") (lambda () (interactive)
        (let ((lawlist-filename (dired-get-file-for-visit)))
          (start-process "default-app" nil "open" lawlist-filename))))
    
      ;; open *.pdf file externally with the OSX default *.pdf viewer.
      (define-key dired-mode-map (kbd "<SPC>") (lambda () (interactive)
        (let ((lawlist-filename (dired-get-file-for-visit)))
          (if (equal (file-name-extension lawlist-filename) "pdf")
            (start-process "default-pdf-app" nil "open" lawlist-filename)))))
    
      ;; open *.pdf file externally using Skim.
      (define-key dired-mode-map (kbd "v") (lambda () (interactive)
        (let* (
          (lawlist-filename (dired-get-file-for-visit))
          (skim "/Applications/Skim.app/Contents/MacOS/Skim") )
          (if (equal (file-name-extension lawlist-filename) "pdf")
            (start-process "pdf-with-skim" nil "open" "-a" skim lawlist-filename)))))
    
    ))
    

    【讨论】:

    • 谢谢!使用 open 命令,我相信 osx 可以处理任何事情,它基本上是双击的 cli 版本。不过这可能是错误的。
    • 第二个示例是一种指定您要使用的应用程序的方法,例如,使用 Skim 代替默认查看器 Adob​​e。
    • 也许您可以添加一段只使用 open 命令并且可以处理任何文件的代码?我认为使用它是安全的,而且可能更方便:developer.apple.com/library/mac/documentation/Darwin/Reference/…
    • 为了方便阅读此内容的任何人:“打开命令打开一个文件(或目录或 URL),就像您双击文件的图标一样。如果未指定应用程序名称,则通过 LaunchServices 确定的默认应用程序用于打开指定的文件。"
    • 我添加了油门全开示例。
    【解决方案2】:

    这行得通,但看起来不优雅:

    http://www.emacswiki.org/emacs/KeyboardMacros

    我用了一个宏:

    (fset 'my_macro

    [?! ?o ?p ?e ?n ?  return])
    

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2019-08-15
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多