17

Я определил свой собственный тип файла vim с подсветкой и т.д. Я хотел бы открыть его с помощью vim на основе терминала, когда я дважды щелкаю по нему. Я использую Mac OS X Любые указатели о том, как начать на этом?

4 ответа4

15

Создайте приложение Automator для запуска следующего appleScript:

on run {input}
   set the_path to POSIX path of input
   set cmd to "vim " & quoted form of the_path
   tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
   tell application "Terminal"
      activate
      if terminalIsRunning is true then
         do script with command cmd
      else
         do script with command cmd in window 1
      end if
   end tell
end run

Сохраните приложение automator. (например, назовите его Vim Launcher)

Щелкните правой кнопкой мыши (или удерживайте нажатой клавишу «Control») на своем пользовательском файле типа vim (например, используйте .vim в качестве расширения) и в разделе « Открыть с помощью…» выберите нижнюю опцию « Другие»… и найдите приложение Automator (например, Vim Launcher), дважды щелкните по нему.

Boom.

1

Я просто хотел добавить комментарий к принятому ответу с изменениями кода, необходимыми для его работы в Yosemite, но, поскольку у меня недостаточно репутации, я не смог добавить комментарий и, следовательно, пытался ответить через ответ.

Сценарий "Открыть файл в терминале из Finder" работал нормально в Mavericks, но он перестал работать после обновления до Yosemite. В Yosemite код в принятом ответе будет работать только в первый раз - это означает, что когда я дважды щелкаю первый файл в Finder, он открывается нормально, но когда я нажимаю на последующие файлы, они просто открывают пустые новые окна терминала (vim не открывается) с командной строкой.

Пройдя по нескольким сайтам, собрал версию, которая прекрасно работает. Я уверен, что есть лучший способ сделать это, но у меня нет опыта работы с Applescript, и поэтому я оставлю это другим, чтобы предложить какие-либо улучшения.

on run {input}
    set the_path to POSIX path of input
    -- set cmd to "vim " & quoted form of the_path
    -- we can do a change directory to make NerdTree happy
    set cmd to "clear;cd `dirname " & the_path & "`;vim " & quoted form of the_path & "; exit"

    tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
    tell application "Terminal"
        if terminalIsRunning is true then
            -- CHANGED code starts --
            set newWnd to do script with command cmd
            do script with command cmd in newWnd
            -- CHANGED code ends --
        else
            do script with command cmd in window 1
        end if
        activate
    end tell
end run
1

Из пяти или около того минут, которые я потратил, играя с ним, чтобы посмотреть, получится ли, я не смог найти встроенную опцию для этого.

Тем не менее, вы, вероятно, можете написать простой Applescript, который будет принимать абсолютный путь к файлам, а затем запускать vim {path} в оболочке bash.

1
set the_path to POSIX path of input
   set cmd to "vim " & quoted form of the_path & "; exit"
   tell application "System Events" to set terminalIsRunning to exists application process "Terminal"
   tell application "Terminal"
      if terminalIsRunning is true then
         do script with command cmd
      else
         do script with command cmd in window 1
      end if
      activate
   end tell
end run

Я использую этот AppleScript вместо этого. Он активирует Terminal.app после (не раньше!) выполнение, чтобы остановить вещи странным образом при использовании пробелов. Он также закрывает окно после выхода из Vim. Просто установите Terminal.app для закрытия после чистых выходов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .