Qual è il modo più semplice per aprire la cartella contenente il file corrente dall'esploratore predefinito del sistema operativo?


10

Qual è il modo più semplice per aprire la cartella contenente il file corrente dall'esploratore predefinito del sistema operativo (ad esempio explorer.exe nel caso del sistema operativo Windows)?


1
Ho un sospetto (sfogliare-url-of-file default-directory) lo farebbe, che funziona su osx con finder, penso che funzionerebbe con Windows, ma non posso provarlo.
Jordon Biondo,

@JordonBiondo funziona! Converti il ​​tuo commento in una risposta.
Nome

Risposte:


14

L'uso browse-url-of-filedovrebbe funzionare quando viene fornita una directory.

È possibile implementare un comando che apre la directory del file corrente in questo modo:

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

Quindi M-x browse-file-directorydovrebbe aprire la directory nel browser dei file del tuo sistema operativo.


C'è stata una piccola incompatibilità con emacs 25. * in Windows, ma la soluzione funziona bene con emacs 26.1 su Windows.
Nome

Sarebbe possibile ottenere il file selezionato, come in VS? Vedi il trucco 20 in dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80
user3341592


1

Esegui shell-command( M+ !) con il programma explorer predefinito e la cartella corrente, ad es. Per MS Windows,explorer .


0

copia il percorso completo negli appunti all'inizio:

;; 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")))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.