Какой самый простой способ открыть папку, содержащую текущий файл, с помощью обозревателя ОС по умолчанию?

10

Какой самый простой способ открыть папку, содержащую текущий файл, с помощью обозревателя ОС по умолчанию (например, explorer.exe в случае ОС Windows)?

имя
источник
1
У меня есть предчувствие (browse-url-of-file-default-directory), которое работает на OSX с Finder, я думаю, что это будет работать с Windows, но не могу проверить это.
Джордон Биондо
@JordonBiondo это работает! Пожалуйста, преобразуйте свой комментарий в ответ.
Имя

Ответы:

14

Использование browse-url-of-fileдолжно работать при наличии каталога.

Вы можете реализовать команду, которая открывает каталог текущего файла следующим образом:

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

Затем M-x browse-file-directoryследует открыть каталог в файловом браузере вашей ОС.

Джордон Биондо
источник
Была небольшая несовместимость с emacs 25. * в Windows, но решение отлично работает с emacs 26.1 в Windows.
Имя
Можно ли получить выбранный файл, как в VS? Смотрите трюк 20 в dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80
user3341592
1

Запустите shell-command( M+ !) с программой проводника по умолчанию и текущей папкой, например, для MS Windows,explorer .

estownya
источник
0

сначала скопируйте полный путь к буферу обмена:

;; 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")))
чен бен
источник