Mac OS X: cách mở vim trong thiết bị đầu cuối khi nhấp đúp vào tệp


19

Tôi đã xác định loại tệp vim tùy chỉnh của riêng mình bằng cách tô sáng, v.v. Tôi muốn mở nó bằng cách sử dụng thiết bị đầu cuối dựa trên vim khi tôi nhấp đúp vào nó. Tôi đang sử dụng mac os x. Bất kỳ con trỏ về làm thế nào để bắt đầu trên này?

Câu trả lời:


17

Tạo một ứng dụng tự động để chạy các applescript sau:

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

Lưu ứng dụng tự động hóa. (ví dụ: đặt tên là Vim Launcher )

Nhấp chuột phải (hoặc nhấp chuột điều khiển) vào tệp loại vim tùy chỉnh của bạn (ví dụ: sử dụng .vim làm tiện ích mở rộng) và bên dưới Mở bằng cách chọn tùy chọn dưới cùng Khác và tìm Ứng dụng tự động của bạn (ví dụ: Trình khởi chạy Vim ), nhân đôi nhấp vào nó.

Bùng nổ.


4
Để tạo trong Automator, bạn có thể nhấp New Document, chọn Applicationmẫu. Trong Actions->Librarytab, bấm Utilities, sau đó Run AppleScript.
cevaris

1
Không hoạt động ở Yosemite.
keyvan

Tôi đã có những thứ hoạt động ở Yosemite, mặc dù tôi sử dụng iTerm: thepugautomatic.com/2015/02/open-in-iterm-vim-from-finder
Henrik N

làm việc cho tôi ở Yosemite. Tuy nhiên, có một trường hợp kỳ lạ--
Ilias Karim

1
Đây dường như không làm việc với iTerm trên 10.12.5
cá oarfish

1

Từ năm phút hoặc lâu hơn tôi đã chơi với nó để xem liệu tôi có thể tìm thấy một tùy chọn tích hợp để làm như vậy không.

Tuy nhiên, bạn có thể có thể viết một Applescript đơn giản sẽ lấy các đường dẫn tuyệt đối của các tệp và sau đó chạy vim {path}trong 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

Tôi sử dụng AppleScript này thay thế. Nó kích hoạt Terminal.app sau khi thực hiện (không phải trước đó!) Để ngăn mọi thứ hoạt động kỳ quặc khi sử dụng Spaces. Nó cũng đóng cửa sổ sau khi Vim thoát. Chỉ cần đặt Terminal.app để đóng sau khi thoát sạch.


1

Tôi chỉ muốn thêm một nhận xét vào câu trả lời được chấp nhận với các thay đổi mã cần thiết để làm cho nó hoạt động ở Yosemite, nhưng vì tôi không có đủ danh tiếng nên không thể thêm nhận xét và do đó cố gắng trả lời qua câu trả lời.

Kịch bản "Open File in Terminal from Finder" đã hoạt động tốt trong Mavericks, nhưng nó đã ngừng hoạt động sau khi nâng cấp lên Yosemite. Trong Yosemite, mã trong câu trả lời được chấp nhận sẽ chỉ hoạt động lần đầu tiên - nghĩa là khi tôi nhấp đúp vào tệp đầu tiên trong Finder, nó sẽ mở tốt, nhưng khi tôi nhấp vào các tệp tiếp theo, chúng sẽ chỉ mở các cửa sổ đầu cuối mới trống (vim sẽ không mở) với dấu nhắc lệnh.

Sau khi đi qua nhiều trang web, cùng nhau tạo ra một phiên bản hoạt động tốt. Tôi chắc chắn có một cách tốt hơn để làm điều đó, nhưng tôi không có kinh nghiệm với Applescript và vì vậy sẽ để lại cho người khác để đề xuất bất kỳ cải tiến nào.

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

Trong Macbook Pro 2017 với Touchbar, tôi thấy rằng [câu trả lời được chấp nhận] ( superuser.com/a/139949/44785 ) hoạt động tốt. Nhưng tôi vẫn muốn thêm dòng "thư mục thay đổi" (cd) để đảm bảo pwd là nơi chứa tệp. Điều này giúp NerdTree chỉ hiển thị các tệp từ thư mục của tệp đã mở.
protoiyer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.