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


19

強調表示などを使用して独自のカスタムvimファイルタイプを定義しました。ダブルクリックすると、ターミナルベースのvimを使用して開きたいと思います。Mac OS Xを使用しています。これを開始する方法についてのポインタはありますか?

回答:


17

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

オートマトンアプリケーションを保存します。(たとえば、名前を付けます Vim Launcher

カスタムvimタイプファイル(拡張子として.vimを使用)を右クリック(またはControl キーを押しながらクリック)し、[ アプリケーションから開く... ]の下の[ その他 ]オプションを選択し、Automatorアプリケーション(例: Vim Launcherなど)。クリックして。

ブーム。


4
Automatorで作成するには、をクリックNew Documentして、Applicationテンプレートを選択します。ではActions->LibraryタブをクリックしUtilities、その後、Run AppleScript
cevaris 14

1
ヨセミテでは機能しません。
キーバン

iTermを使用しているにもかかわらず、ヨセミテで動作するようになりました:thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N

ヨセミテで働いています。1奇妙なエッジの場合、though--あり
イリアスカリム

1
これは、10.12.5にITERMで動作するようには思えない
oarfish

1

5分かそこらで遊んで、それを行うための組み込みオプションが見つからないかどうかを確認しました。

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


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を使用します。Spacesを使用しているときに物事が奇妙に振る舞うのを防ぐために、実行後に(前ではなく!)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

タッチバー付きの2017 Macbook Proでは、[受け入れられた回答](superuser.com/a/139949/44785)が正常に機能することがわかりました。ただし、「ディレクトリの変更」(cd)行を追加して、pwdがファイルの場所になるようにします。これにより、NerdTreeは、開いているファイルのフォルダーのファイルのみを表示できます。
プロトイヤー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.