Mac OS X: Bir dosyaya çift tıklandığında terminalde vim nasıl açılır


19

Vurgulama vb. İle kendi özel vim dosya türünü tanımladım. Üzerine çift tıkladığımda terminal tabanlı vim kullanarak açmak istiyorum. Mac OS X kullanıyorum. Bunun nasıl başlayacağına dair herhangi bir işaretçi var mı?

Yanıtlar:


17

Aşağıdaki applecript'i çalıştırmak için bir Automator Uygulaması oluşturun:

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

Otomator uygulamasını kaydedin. (ör. Vim Launcher olarak adlandırın )

Özel vim türü dosyanızda (örneğin .vim uzantısını uzantı olarak kullanın) sağ tıklayın (veya control tuşuna basarak tıklayın) ve Birlikte Aç… altından Diğer… seçeneğini belirleyin ve Automator Uygulamanızı (örn. Vim Launcher ) bulun. tıkla.

Boom.


4
Automator'da oluşturmak için simgesini tıklatabilir New Document, Applicationşablonu seçebilirsiniz . Gelen Actions->Librarysekmesini tıklatın Utilities, sonra Run AppleScript.
cevaris

1
Yosemite'de çalışmıyor.
keyvan

Yosemite'de işlerim var, ama iTerm kullanıyorum: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N

Yosemite'de benim için çalışıyor. Ancak garip bir uç dava var--
Ilias Karim

1
Bu, 10.12.5'te iTerm ile çalışmıyor gibi görünüyor
oarfish

1

Beş dakika kadar onunla oynamaya harcadım ve bunu yapmak için yerleşik bir seçenek bulamadım.

Ancak, dosyaları mutlak yoldan alıp vim {path}bir bash kabuğunda çalıştıracak basit bir Applescript yazabilirsiniz .


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

Bunun yerine bu AppleScript'i kullanıyorum. Spaces kullanırken işlerin garip davranmasını durdurmak için Terminal.app'ı (daha önce değil!) Yürütüldükten sonra etkinleştirir. Ayrıca Vim çıktıktan sonra pencereyi kapatır. Terminal.app'ı temiz çıkışlardan sonra kapanacak şekilde ayarlamanız yeterlidir.


1

Yosemite'de çalışması için gerekli kod değişiklikleri ile kabul edilen cevaba bir yorum eklemek istedim, ancak yeterli itibara sahip olmadığım için bir yorum ekleyemedim ve bu nedenle bir cevap yoluyla cevap vermeye çalıştım.

"Finder'dan Terminalde Dosya Aç" komut dosyası Mavericks'te iyi çalışıyordu, ancak Yosemite'ye yükseltildikten sonra çalışmayı durdurdu. Yosemite'de, kabul edilen cevaptaki kod sadece ilk kez çalışacaktı - yani Finder'daki ilk dosyayı çift tıkladığımda, gayet iyi açılıyor, ancak sonraki dosyaları tıkladığımda boş yeni terminal pencereleri (vim açılmaz) komut istemiyle.

Birden fazla siteden geçtikten sonra, iyi çalışan bir sürümü birlikte topladı. Bunu yapmak için daha iyi bir yol olduğundan eminim, ama Applescript ile hiçbir deneyimim yok ve bu yüzden herhangi bir iyileştirme önermek için başkalarına bırakacaktır.

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

Touchbar ile 2017 Macbook Pro'da [kabul edilen cevap] 'nın ( superuser.com/a/139949/44785 ) iyi çalıştığını görüyorum . Ama yine de pwd dosyasının nerede olduğundan emin olmak için "dizin değiştir" (cd) satırını eklemek istiyorum. Bu, NerdTree'nin yalnızca açılan dosyanın klasöründeki dosyaları görüntülemesine yardımcı olur.
protoiyer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.