web-dev-qa-db-ja.com

Mac OS X:ファイルをダブルクリックしたときにターミナルでvimを開く方法

独自のカスタムvimファイルタイプをハイライトなどで定義しました。ダブルクリックすると、ターミナルベースのvimを使用して開きたいと思います。私はmacosxを使用しています。これから始める方法についてのポインタはありますか?

20

次のアップルスクリプトを実行する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タイプファイルを右クリック(またはcontrolキーを押しながらクリック)し(たとえば、拡張子として。vimを使用)、Open With…の下のオプションを選択します- その他… Automatorアプリケーション(例:Vim Launcher)を見つけて、ダブルクリックします。

ブーム。

17
ghoppe

Yosemiteで機能させるために必要なコード変更を加えて、承認された回答にコメントを追加したかったのですが、十分な評判がないためコメントを追加できず、回答を介して返信しようとしました。

「Finderからターミナルでファイルを開く」スクリプトはMavericksでは正常に機能していましたが、ヨセミテへのアップグレード後に機能しなくなりました。ヨセミテでは、受け入れられた回答のコードは最初のみ機能します-つまり、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
protoiyer

5分ほどから、それを試してみて、組み込みのオプションが見つからないかどうかを確認しました。

ただし、ファイルの絶対パスを取得してから、bashシェルでvim {path}を実行する単純なApplescriptを作成することもできます。

1
Josh K
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をアクティブにして、Spacesを使用しているときに奇妙な動作をしないようにします。また、Vimが終了した後にウィンドウを閉じます。クリーンな終了後にTerminal.appを閉じるように設定するだけです。

1
ggustafsson