Mac OS X: comment ouvrir vim dans un terminal en double-cliquant sur un fichier


19

J'ai défini mon propre type de fichier vim personnalisé avec surlignage, etc. Je voudrais l'ouvrir en utilisant le terminal basé sur vim lorsque je double-clique dessus. J'utilise mac os x. Des conseils sur la façon de commencer à ce sujet?

Réponses:


17

Créez une application Automator pour exécuter le script Apple suivant:

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

Enregistrez l'application de l'automate. (par exemple, nommez-le Vim Launcher )

Faites un clic droit (ou contrôle-clic) sur votre fichier de type vim personnalisé (par exemple, utilisez .vim comme extension) et sous Ouvrir avec… choisissez l'option du bas Autre… et trouvez votre application Automator (par exemple. Vim Launcher ), double- cliquez dessus.

Boom.


4
Pour créer dans Automator, vous pouvez cliquer sur New Document, sélectionner le Applicationmodèle. Dans l' Actions->Libraryonglet, cliquez sur Utilities, puis Run AppleScript.
cevaris

1
Ne fonctionne pas à Yosemite.
keyvan

J'ai fait fonctionner les choses à Yosemite, bien que j'utilise iTerm: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N

travaille pour moi à Yosemite. il y a un cas étrange, cependant--
Ilias Karim

1
Cela ne semble pas fonctionner avec iTerm le 10.12.5
oarfish

1

Au cours des cinq minutes environ que j'ai passées à jouer avec pour voir si je ne pourrais pas trouver une option intégrée pour le faire.

Cependant, vous pouvez probablement écrire un simple Applescript qui prendra le chemin absolu des fichiers puis s'exécutera vim {path}dans un shell bash.


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

J'utilise plutôt cet AppleScript. Il active Terminal.app après (pas avant!) L'exécution pour empêcher que les choses agissent bizarrement lors de l'utilisation de Spaces. Il ferme également la fenêtre après la sortie de Vim. Définissez simplement Terminal.app pour qu'il se ferme après des sorties propres.


1

Je voulais juste ajouter un commentaire à la réponse acceptée avec les modifications de code nécessaires pour le faire fonctionner dans Yosemite, mais comme je n'ai pas une réputation suffisante, je ne pouvais pas ajouter de commentaire, et donc tenter de répondre via une réponse.

Le script "Ouvrir un fichier dans le terminal à partir du Finder" fonctionnait bien dans Mavericks, mais il a cessé de fonctionner après la mise à niveau vers Yosemite. Dans Yosemite, le code dans la réponse acceptée ne fonctionnerait que la première fois - ce qui signifie que lorsque je double-clique sur le premier fichier dans le Finder, il s'ouvre correctement, mais lorsque je clique sur les fichiers suivants, ils ouvrent simplement de nouvelles fenêtres de terminal vides (vim ne s'ouvre pas) avec l'invite de commande.

Après avoir parcouru plusieurs sites, bricolé une version qui fonctionne très bien. Je suis sûr qu'il existe une meilleure façon de le faire, mais je n'ai aucune expérience avec Applescript et je laisserai donc à d'autres le soin de suggérer des améliorations.

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

Dans un Macbook Pro 2017 avec Touchbar, je trouve que la [réponse acceptée] ( superuser.com/a/139949/44785 ) fonctionne bien. Mais je veux toujours ajouter la ligne "changer de répertoire" (cd) pour m'assurer que le pwd est bien là où se trouve le fichier. Cela permet à NerdTree d'afficher uniquement les fichiers du dossier du fichier ouvert.
protoiyer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.