2013-11-16 5 views
2

Я хочу прекратить использовать finder в OSX и вместо этого использовать вместо него вместо этого использовать вместо этого. OSX имеет команду «открыть», чтобы открыть любой файл в приложении по умолчанию из кли. (Пример: «открыть файл $ the_file»). Это отлично работает с C-! после чего я вхожу в «open», но я хотел бы сделать обе эти вещи с помощью комбинации клавиш, скажем, C-0.Определить привязку клавиш для запуска команды («открыть») в файле под курсором

Как создать функцию, которая выполняет эквивалент «C-!» -> «open» в dired, когда я нажимаю C-0 с помощью курсора по пути к файлу?

(EDIT: Я нашел решение, макросы!)

ответ

1

сбросить lawlist-filename к nil в конце каждого примера, так что она может быть использована во множестве других функций, в том числе, но не ограничиваясь этим, dired-read-file-name: dired-read-file-name: pop-up dired mode to read-file-name

EDIT: Переписанный с помощью @phils - использует привязки let вместо глобальных переменных.

(eval-after-load "dired" '(progn 

    ;; open anything externally with OSX default app -- Wide-Open-Throttle! 
    (define-key dired-mode-map (kbd "z") (lambda() (interactive) 
    (let ((lawlist-filename (dired-get-file-for-visit))) 
     (start-process "default-app" nil "open" lawlist-filename)))) 

    ;; open *.pdf file externally with the OSX default *.pdf viewer. 
    (define-key dired-mode-map (kbd "<SPC>") (lambda() (interactive) 
    (let ((lawlist-filename (dired-get-file-for-visit))) 
     (if (equal (file-name-extension lawlist-filename) "pdf") 
     (start-process "default-pdf-app" nil "open" lawlist-filename))))) 

    ;; open *.pdf file externally using Skim. 
    (define-key dired-mode-map (kbd "v") (lambda() (interactive) 
    (let* (
     (lawlist-filename (dired-get-file-for-visit)) 
     (skim "/Applications/Skim.app/Contents/MacOS/Skim")) 
     (if (equal (file-name-extension lawlist-filename) "pdf") 
     (start-process "pdf-with-skim" nil "open" "-a" skim lawlist-filename))))) 

)) 
+0

Спасибо! С помощью команды open я доверяю osx для обработки чего-либо, это в основном кли-версия двойного щелчка. Это может быть неправильно. –

+1

Второй пример - это способ указать, какое приложение вы хотите использовать, например, Skim, а не средство просмотра Adobe по умолчанию. – lawlist

+0

Возможно, вы могли бы добавить фрагмент кода, который использует только команду open и будет работать в любом файле? Я думаю, что безопасно использовать его и, возможно, более удобно: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/open.1.html –