Quelle est la façon la plus simple d'ouvrir le dossier contenant le fichier actuel par l'explorateur par défaut du système d'exploitation?

10

Quelle est la manière la plus simple d'ouvrir le dossier contenant le fichier actuel par l'explorateur par défaut du système d'exploitation (par exemple explorer.exe dans le cas du système d'exploitation Windows)?

Nom
la source
1
J'ai un pressentiment (répertoire par défaut de navigation-url-of-file) qui le ferait, qui fonctionne sur osx avec finder, je pense que cela fonctionnerait avec Windows, mais je ne peux pas le tester.
Jordon Biondo
@JordonBiondo ça marche! Veuillez convertir votre commentaire en réponse.
Nom du

Réponses:

14

L'utilisation browse-url-of-filedevrait fonctionner avec un répertoire.

Vous pouvez implémenter une commande qui ouvre le répertoire du fichier actuel comme ceci:

(defun browse-file-directory ()
  "Open the current file's directory however the OS would."
  (interactive)
  (if default-directory
      (browse-url-of-file (expand-file-name default-directory))
    (error "No `default-directory' to open")))

Ensuite M-x browse-file-directory, ouvrez le répertoire dans le navigateur de fichiers de votre système d'exploitation.

Jordon Biondo
la source
Il y a eu une petite incompatibilité avec emacs 25. * sous Windows, mais la solution fonctionne bien avec emacs 26.1 sous Windows.
Nom du
Serait-il possible d'obtenir le fichier sélectionné, comme dans VS? Voir l'astuce 20 dans dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80
user3341592
1

Exécutez shell-command( M+ !) avec le programme d'exploration par défaut et le dossier actuel, par exemple pour MS Windows,explorer .

estownya
la source
0

copiez d'abord le chemin complet vers le presse-papiers:

;; you need install xsel under Linux
;; xclip has some problem when copying under Linux
(defun copy-yank-str (msg &optional clipboard-only)
  (unless clipboard-only (kill-new msg))
  (cond
   ;; display-graphic-p need windows 23.3.1
   ((and (display-graphic-p) x-select-enable-clipboard)
    (x-set-selection 'CLIPBOARD msg))
   (t (with-temp-buffer
        (insert msg)
        (shell-command-on-region (point-min) (point-max)
                                 (cond
                                  ((eq system-type 'cygwin) "putclip")
                                  ((eq system-type 'darwin) "pbcopy")
                                  (t "xsel -ib")))))))

(defun cp-fullpath-of-current-buffer ()
  "copy full path into the yank ring and OS clipboard"
  (interactive)
  (when buffer-file-name
    (copy-yank-str (file-truename buffer-file-name))
    (message "file full path => clipboard & yank ring")))
chen bin
la source