Mac OS X: cara membuka vim di terminal ketika klik dua kali pada file

19

Saya telah menetapkan jenis file vim kustom saya sendiri dengan highlighting dll. Saya ingin membukanya menggunakan vim berbasis terminal ketika saya mengklik dua kali di atasnya. Saya menggunakan mac os x. Adakah petunjuk tentang bagaimana memulainya?

sixtyfootersdude
sumber

Jawaban:

17

Buat Aplikasi Automator untuk menjalankan applescript berikut:

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

Simpan aplikasi automator. (mis. beri nama Vim Launcher )

Klik kanan (atau kontrol-klik) pada file jenis vim khusus Anda (mis. Gunakan .vim sebagai ekstensi) dan di bawah Buka Dengan ... pilih opsi bawah Lainnya ... dan temukan Aplikasi Automator Anda (mis. Vim Launcher ), double- klik itu.

Ledakan.

ghoppe
sumber
4
Untuk membuat di Automator, Anda dapat mengklik New Document, pilih Applicationtemplat. Di Actions->Librarytab, klik Utilities, lalu Run AppleScript.
cevaris
1
Tidak berfungsi di Yosemite.
keyvan
Saya dapat pekerjaan di Yosemite, meskipun saya menggunakan iTerm: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N
bekerja untuk saya di Yosemite. ada satu kasus tepi yang aneh, meskipun
Ilias Karim
1
Ini sepertinya tidak bekerja dengan iTerm pada 10.12.5
oarfish
1

Dari lima atau lebih menit saya menghabiskan waktu bermain dengannya untuk melihat apakah itu akan saya tidak dapat menemukan opsi built-in untuk melakukannya.

Namun, Anda mungkin dapat menulis Applescript sederhana yang akan mengambil path absolut file dan kemudian dijalankan vim {path}dalam bash shell.

Josh K.
sumber
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

Saya menggunakan AppleScript ini sebagai gantinya. Ini mengaktifkan Terminal.app setelah (bukan sebelum!) Eksekusi untuk menghentikan hal-hal dari bertindak aneh ketika menggunakan Spaces. Itu juga menutup jendela setelah Vim keluar. Cukup atur Terminal.app untuk ditutup setelah keluar bersih.

ggustafsson
sumber
1

Saya hanya ingin menambahkan komentar ke jawaban yang diterima dengan perubahan kode yang diperlukan untuk membuatnya berfungsi di Yosemite, tetapi karena saya tidak memiliki reputasi yang cukup tidak dapat menambahkan komentar, dan karenanya berusaha membalas melalui jawaban.

Skrip "Buka File di Terminal dari Finder" berfungsi dengan baik di Mavericks, tetapi berhenti berfungsi setelah peningkatan ke Yosemite. Di Yosemite, kode dalam jawaban yang diterima hanya akan berfungsi pertama kali - artinya ketika saya mengklik dua kali file pertama di Finder, kode itu terbuka dengan baik, tetapi ketika saya mengklik file-file berikutnya, mereka hanya akan membuka jendela terminal baru yang kosong (vim tidak akan terbuka) dengan command prompt.

Setelah melalui beberapa situs, membuat versi yang berfungsi baik. Saya yakin ada cara yang lebih baik untuk melakukannya, tetapi saya tidak memiliki pengalaman dengan Applescript dan karenanya akan menyerahkannya kepada orang lain untuk menyarankan perbaikan.

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
protoiyer
sumber
Dalam Macbook Pro 2017 dengan Touchbar, saya menemukan bahwa [jawaban yang diterima] ( superuser.com/a/139949/44785 ) berfungsi dengan baik. Tapi saya ingin tetap menambahkan baris "direktori perubahan" (cd) untuk memastikan pwd di mana file tersebut berada. Ini membantu NerdTree untuk hanya menampilkan file dari folder file yang dibuka.
protoiyer