Last active
December 8, 2023 22:34
-
-
Save Huluk/5117702 to your computer and use it in GitHub Desktop.
Open Files with Terminal Vim by default [mac, iterm]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
If you want your terminal vim to open files you double click, follow the following steps (MacOS only): | |
1. Open Automator | |
2. Select Application | |
3. Copy the attached file | |
4. Save and set as default for opening files | |
Multiple files are opened in vim tabs. | |
If there is already a vim instance running, files are opened in it. | |
Bugs / Problems: | |
- does not open files when vim instance is in insert mode | |
- vim instances running e.g. in tmux are not recognized | |
Also thank Daniel Beck, who posted the script I adjusted | |
http://superuser.com/questions/283418/how-can-i-make-terminal-vim-my-default-editor-application-in-mac-os-x |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on run {input, parameters} | |
if (count of input) > 0 then | |
tell application "System Events" | |
set runs to false | |
try | |
set p to application process "iTerm" | |
set runs to true | |
end try | |
end tell | |
tell application "iTerm" | |
activate | |
if (count of terminals) = 0 then | |
make new terminal | |
end if | |
set numItems to the count of items of input | |
set numTerms to the count of terminals | |
set launchPaths to "" | |
repeat with t from 0 to (numTerms - 1) | |
tell item (numTerms - t) of terminals | |
if (count of sessions) = 0 then | |
launch session "Default" | |
end if | |
repeat with s from 1 to count of sessions | |
set currentSession to item s of sessions | |
if name of currentSession contains "vim" then | |
tell currentSession | |
write text (":silent! tablast") | |
repeat with x from 1 to numItems | |
set filePath to quoted form of POSIX path of item x of input | |
write text (":execute 'tabedit '.fnameescape(" & filePath & ")") | |
end repeat | |
return | |
end tell | |
end if | |
end repeat | |
end tell | |
end repeat | |
tell current terminal | |
tell (launch session "Default") | |
repeat with x from 1 to numItems | |
set filePath to quoted form of POSIX path of item x of input | |
set launchPaths to launchPaths & " " & filePath | |
end repeat | |
write text ("mvim -p " & launchPaths) | |
end tell | |
end tell | |
end tell | |
end if | |
end run |
for iterm2 on latest os x things change a little. Here's what I use. It's not 100% the same, but it suits my needs.
on run {input, parameters}
if (count of input) > 0 then
tell application "System Events"
set runs to false
try
set p to application process "iTerm"
set runs to true
end try
end tell
tell application "iTerm"
activate
set numItems to the count of items of input
set launchPaths to ""
repeat with x from 1 to numItems
set filePath to quoted form of POSIX path of item x of input
set launchPaths to launchPaths & " " & filePath
end repeat
tell current window
create tab with default profile command "vim " & launchPaths
end tell
end tell
end if
end run
can this be shell command make all feature same???
for iterm2 on latest os x things change a little. Here's what I use. It's not 100% the same, but it suits my needs.
But this is only for iTerm, what about the regular zsh terminal?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I get "The action “Run AppleScript” encountered an error." when attempting to use this. I'm using macOS Sierra v10.12. Any suggestions? Thanks.