回答:
試してくださいopenwith
。次のコードはそれを有効にし、PDFを開くことができますevince
(お好みのPDFビューアーに変更します):
(require 'openwith)
(openwith-mode t)
(setq openwith-associations '(("\\.pdf\\'" "evince" (file))))
多くの機能(検索の強調表示、選択の強調表示、注釈、コンテンツツリー)を含むPDFを表示する場合は、pdf-toolsを使用します。デモでわかるように、強調表示を使用してIsearchを使用できます。Emacsは今では私のお気に入りのPDFリーダーです。Bookmark(+)を使用して特定のPDFページをブックマークすることもできます。
編集:helm
外部プログラムを使用し、使用したい場合helm
は、外部ファイルを開くためのアクションメニューに既にあります:Open file externally C-c C-x. C-u to choose again
。システムで利用可能なすべてのプログラムのリストを提供し、選択するための素敵なHelmインターフェイスを提供します。選択すると、Helmは、プレフィックス引数C-u
を指定してコマンドを実行して新しいコマンドを選択するまで、それを記憶します。
pdf-tools
!素晴らしいパッケージ。大好きです!デモは、可能なことのほんの一部に過ぎませんが、素晴らしいものです... :)
pdf-tools
、Emacs Lispパーツをインストールして使用する前に、リポジトリを複製し、Emacsがバイナリを見ることができる場所にCパーツをコンパイルしてインストールする必要があります。
について尋ねましたfind-file
。他の人(例:ダン)がそれについて言っていることに加えて、optionのファイルタイプ(例:拡張子)に関連付けられたアプリケーションを使用してファイルを開くことについて知ることは価値がありますdired-guess-shell-alist-user
。また、MS WindowsでEmacsを使用する場合、Windowsファイルの関連付けを使用してファイルを開く方法を知っておくと役立ちます。
オプションdired-guess-shell-alist-user
は、標準ライブラリをロードした後に使用できますdired-x.el
。PDFファイルのデフォルトの関連付けはvariable dired-guess-shell-alist-default
で定義されており、プログラムxpdf
(UNIXおよびGNU / Linuxで使用可能)です。オプションdired-guess-shell-alist-user
を使用すると、たとえば、この関連付けをalist:に追加することにより、代わりにAdobe Acrobat Readerに関連付けることができます("\.pdf$" . "AcroRd32.exe")
。
次に、を使用するだけで、DiredでPDFファイルを開くことができます!
。これにより、デフォルトのプログラムが「推測」として提供されますM-n
。これにはを繰り返してアクセスできます。だから、!
続くM-n
あなたのシェルコマンドを与えるAcroRd32.exe
ポイントはPDFファイル名に及び、そのコマンド/プログラムが正規表現に関連付けられている場合であれば\.pdf$
。
Diredに加えて、ファイルの関連付けをdired-guess-shell-alist-user
ブックマークファイルハンドラーとして使用できます。つまり、ライブラリBookmark +を使用している場合、PDFファイルへのブックマークに対してPDFファイルの関連付けを有効にすることができます。の現在の値は、これを制御するdired-guess-shell-alist-user
optionのデフォルト値として使用されますbmkp-default-handlers-for-file-types
。
あなたはオプションdired-guess-shell-alist-user
を考えることができますしbmkp-default-handlers-for-file-types
、やや似ていauto-mode-alist
ます。ただし、ファイル名のパターンをバッファーモードにマッピングするのではなく、ファイルアクションにマッピングします。また、特定のコマンドを使用する場合にのみ有効になります。
MS Windowsを使用している場合、Diredでファイルを開くか、ブックマークに「ジャンプ」するときに、代わりに(または)既存のWindowsファイルの関連付けを利用できます。これにはライブラリが必要ですw32-browser.el
。
Diredの場合、ライブラリDired +も必要です-「Diredでの Windowsファイルの関連付けの使用」を参照してください。ブックマークについては、Bookmark +も必要です-Emacsでアクセスできないファイルのブックマークおよび Windowsファイルの関連付けを使用してブックマークを開くを参照してください。
ランナーを使用しています。ここに私の設定ファイルの抜粋があります
(defun my:open-file-with-dired (file)
"Ask dired how it would open FILE.
This code is useful if dired is well configured to open files
with external applications. I recommend using the `runner`
package to do so."
(use-package dired-aux)
(dired-do-async-shell-command
(dired-guess-shell-command (format "Open %s " file) (list file))
0
(list file)))
(add-to-list 'org-file-apps '(t . (my:open-file-with-dired file)))
(add-to-list 'org-file-apps '("\\.png\\'" . default))
プラグインなしでこれを達成する私の方法は次のとおりです。Ubuntu 16.04 LTSでEmacs 25.3を実行しています。OSがmacOSまたはWindowsの場合、xdg-open
ここで定義されている最初の関数を変更する必要があります。このリンクは出発点として非常に役立ちました。
(defun xdg-open (filename)
(interactive "fFilename: ")
(let ((process-connection-type))
(start-process "" nil "xdg-open" (expand-file-name filename))))
(defun find-file-auto (orig-fun &rest args)
(let ((filename (car args)))
(if (cl-find-if
(lambda (regexp) (string-match regexp filename))
'("\\.pdf\\'" "\\.docx?\\'"))
(xdg-open filename)
(apply orig-fun args))))
(advice-add 'find-file :around 'find-file-auto)
上記のコードがロードされた後、C-x C-f
PDFおよびワードファイルを押すと、システムのデフォルトアプリを使用してファイルが自動的に開きます。
私はEmacsが提供するアドバイスメカニズムが本当に好きです。(elisp)Advising Functionsを参照してください。既存の機能に互換性のある方法で助言することによりC-x C-f
、新しい機能のように共通キーを再バインドすることを避けます。