Mac OS X: як відкрити vim у терміналі, коли двічі клацніть файл


19

Я визначив свій власний тип файлу vim з виділенням і т. Д. Я хотів би відкрити його, використовуючи термін на основі vim, коли я двічі клацнув на ньому. Я використовую mac os x. Будь-які вказівки, як почати з цього?

Відповіді:


17

Створіть додаток Automator для запуску наступного апплета:

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

Збережіть додаток автоматизатора. (наприклад, назвіть його Vim Launcher )

Клацніть правою кнопкою миші (або натисніть клавішу управління) на вашому користувальницькому файлі типу vim (наприклад, використовуйте .vim як розширення) та під опцією Open With… виберіть нижню опцію Other… та знайдіть свою програму Automator (наприклад, Vim Launcher ), двічі- клацніть його.

Бум.


4
Щоб створити в Automator, ви можете натиснути New Document, вибрати Applicationшаблон. На Actions->Libraryвкладці натисніть Utilities, а потім Run AppleScript.
cevaris

1
Не працює в Йосеміті.
брелок

Я працюю в Yosemite, хоча я використовую iTerm: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N

працює для мене в Йосеміті. Однак є один дивний крайовий випадок
Іліас Карим

1
Здається, це не працює з iTerm 10.12.5
морська риба

1

З п'яти хвилин, які я провів, граючи з ним, щоб побачити, чи не зможу я знайти вбудований варіант для цього.

Однак, ймовірно, ви можете написати простий Applescript, який буде приймати файли абсолютним шляхом, а потім запускати vim {path}в bash shell.


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, щоб закрити після чистого виходу.


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

У Macbook Pro 2017 року із сенсорною панеллю я вважаю, що [прийнята відповідь] ( superuser.com/a/139949/44785 ) працює нормально. Але я все ж хочу додати рядок "каталог змін" (cd), щоб переконатися, що файл pwd знаходиться там, де знаходиться файл. Це допомагає NerdTree відображати лише файли з папки відкритого файлу.
протоієр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.