Mac OS X: come aprire vim nel terminale facendo doppio clic su un file


19

Ho definito il mio tipo di file vim personalizzato con l'evidenziazione, ecc. Vorrei aprirlo usando il vim basato sul terminale quando faccio doppio clic su di esso. Sto usando mac os x. Qualche suggerimento su come iniziare su questo?

Risposte:


17

Crea un'applicazione Automator per eseguire il seguente applecript:

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

Salva l'applicazione di automazione. (es. chiamalo Vim Launcher )

Fai clic con il pulsante destro del mouse (o fai clic tenendo premuto il tasto Ctrl) sul tuo file personalizzato di tipo vim (es. Usa .vim come estensione) e sotto Apri con ... scegli l'opzione in basso Altro ... e trova la tua applicazione Automator (es. Vim Launcher ), doppio- cliccalo.

Boom.


4
Per creare in Automator, è possibile fare clic New Document, selezionare il Applicationmodello. Nella Actions->Libraryscheda, fai clic su Utilities, quindi Run AppleScript.
cevaris,

1
Non funziona in Yosemite.
keyvan,

Ho fatto funzionare le cose in Yosemite, anche se uso iTerm: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N

lavora per me in Yosemite. c'è uno strano caso limite, però ...
Ilias Karim

1
Questo non sembra funzionare con iTerm il 10.12.5
oarfish il

1

Dai circa cinque minuti che ho trascorso a giocarci per vedere se non avrei potuto trovare un'opzione integrata per farlo.

Tuttavia, probabilmente puoi scrivere un semplice Applescript che prenderà il percorso assoluto dei file e quindi verrà eseguito vim {path}in una 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

Uso invece questo AppleScript. Attiva Terminal.app dopo l'esecuzione (non prima!) Per impedire che le cose si comportino in modo strano quando si usa Spaces. Chiude anche la finestra dopo l'uscita di Vim. Basta impostare Terminal.app per chiudere dopo le uscite pulite.


1

Volevo solo aggiungere un commento alla risposta accettata con le modifiche al codice necessarie per farlo funzionare in Yosemite, ma poiché non ho una reputazione sufficiente non potevo aggiungere un commento, e quindi tentare di rispondere tramite una risposta.

Lo script "Apri file nel terminale dal Finder" funzionava bene in Mavericks, ma ha smesso di funzionare dopo l'aggiornamento a Yosemite. In Yosemite, il codice nella risposta accettata funzionerebbe solo la prima volta - il che significa che quando faccio doppio clic sul primo file nel Finder, si apre bene, ma quando faccio clic sui file successivi, aprono semplicemente nuove finestre del terminale vuote (vim non si aprirà) con il prompt dei comandi.

Dopo aver attraversato più siti, ha messo insieme una versione che funziona perfettamente. Sono sicuro che esiste un modo migliore per farlo, ma non ho esperienza con Applescript e quindi lo lascerò ad altri per suggerire eventuali miglioramenti.

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

In un Macbook Pro 2017 con Touchbar, trovo che la [risposta accettata] ( superuser.com/a/139949/44785 ) funzioni bene. Ma voglio ancora aggiungere la riga "cambia directory" (cd) per assicurarsi che il pwd sia dove si trova il file. Questo aiuta NerdTree a visualizzare solo i file dalla cartella del file aperto.
protoiyer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.