I do a lot of programming and just starting to do a bit of web development. At the moment I am going to be making a few files and folders, because of this, is there a way to open a application in vim (in terminal not visual vim) when double/right clicking the file in finder?


  • 1
    Any reason why gVim won't do? If you aren't already using Terminal.app it just seems a tad odd...Though there's always the argument for not installing more cruft on a system, I guess… – forquare Oct 26 '15 at 18:02
  • @forquare It's because after I have edited that file I would like to run some command line tools, for example when going back to C++, I would like to run the g++ command then execute it after saving the file. I also don't want to download another application unless I have to. – iProgram Oct 26 '15 at 18:26

Create an Applet. The script below should get you started. Save that Applet to place of your preference (/Applications/). Select any text file and press ⌘+I(nfo) > Open With: > Other > Select you Applet, then click change all. Now whenever you open any text file that applet will run, which will open the file in vim.

on open theFiles
    tell application "Terminal"
        -- If there are no open windows, open one.
        if (count of windows) is less than 1 then
            do script ""
        end if
        set theTab to selected tab in first window
        set filePath to POSIX path of item 1 of theFiles
        do script "/usr/bin/vim " & quoted form of filePath in theTab
    end tell
end open

on run
    --  Handle the case where the script is launched without any dropped files
    open (choose file with multiple selections allowed)
end run
  • Good point! I could then put this in automator and set it as a service, which will then allow me to have a keyboard shortcut. Thanks – iProgram Oct 27 '15 at 10:56

Code below tested with Mojave and supports a file path where both directory and filename components can optionally contain spaces. It sets the working directory to the location of the underlying file.

on run {input}
  set filename to quoted form of POSIX path of input
  -- support both directories and file names with spaces within
  set cmd to "clear;cd \"$(dirname " & filename & ")\";/usr/bin/vim " & filename & "; exit"
  tell application "System Events" to set termRunning to exists application process "Terminal"
  tell application "Terminal"
    if termRunning is true then
      set newWnd to do script with command cmd
      do script with command cmd in window 1
    end if
  end tell
end run

Use Automator to create a new "Run AppleScript" action with above contents and save script to an appropriate location (e.g. in /Applications/)

New contributor
TodayGuessWhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .