Jaki jest najłatwiejszy sposób otwarcia folderu zawierającego bieżący plik przez domyślnego eksploratora systemu operacyjnego?

10

Jaki jest najprostszy sposób otwarcia folderu zawierającego bieżący plik przez domyślnego eksploratora systemu operacyjnego (np. Explorer.exe w przypadku systemu operacyjnego Windows)?

Imię
źródło
1
Mam przeczucie (domyślny katalog pliku do przeglądania), by to zrobiło, działa na osxie z wyszukiwarką, myślę, że będzie działało z Windows, ale nie mogę go przetestować.
Jordon Biondo
@JordonBiondo to działa! Przekształć swój komentarz w odpowiedź.
Imię

Odpowiedzi:

14

Korzystanie browse-url-of-filepowinno działać po otrzymaniu katalogu.

Możesz zaimplementować polecenie otwierające katalog bieżącego pliku w następujący sposób:

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

Następnie M-x browse-file-directorypowinien otworzyć katalog w przeglądarce plików systemu operacyjnego.

Jordon Biondo
źródło
Wystąpiła niewielka niezgodność z emacsem 25. * w systemie Windows, ale rozwiązanie działa dobrze z emacsem 26.1 w systemie Windows.
Imię,
Czy można byłoby wybrać plik, tak jak w VS? Zobacz lewę 20 w dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80
user3341592
1

Uruchom shell-command( M+ !) z domyślnym programem eksploratora i bieżącym folderem, np. Dla MS Windows,explorer .

estownya
źródło
0

najpierw skopiuj pełną ścieżkę do schowka:

;; 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
źródło