¿Cuál es la forma más fácil de abrir la carpeta que contiene el archivo actual por el explorador predeterminado del sistema operativo?

10

¿Cuál es la forma más fácil de abrir la carpeta que contiene el archivo actual por el explorador predeterminado del sistema operativo (por ejemplo, explorer.exe en el caso del sistema operativo Windows)?

Nombre
fuente
1
Tengo un presentimiento (el directorio predeterminado de exploración de la url del archivo) lo haría, eso funciona en osx con Finder, creo que funcionaría con Windows, pero no puedo probarlo.
Jordon Biondo
@JordonBiondo funciona! Por favor convierta su comentario en una respuesta.
Nombre

Respuestas:

14

Usar browse-url-of-filedebería funcionar cuando se le da un directorio.

Puede implementar un comando que abra el directorio del archivo actual de esta manera:

(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")))

Luego M-x browse-file-directorydebe abrir el directorio en el navegador de archivos de su sistema operativo.

Jordon Biondo
fuente
Ha habido una pequeña incompatibilidad con emacs 25. * en Windows, pero la solución funciona bien con emacs 26.1 en Windows.
Nombre
¿Sería posible obtener el archivo seleccionado, como en VS? Ver el truco 20 en dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80
user3341592
1

Ejecute shell-command( M+ !) con el programa explorador predeterminado y la carpeta actual, por ejemplo, para MS Windows,explorer .

estownya
fuente
0

copie la ruta completa al portapapeles al principio:

;; 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
fuente