Làm gì để tạo plugin vim?


11

Vì vậy, câu hỏi của tôi rất đơn giản. Có phải là một ý tưởng tốt để học vim scripting chỉ để tạo vim hoặc chúng ta nên áp dụng một số ngôn ngữ khác được chấp nhận hơn cho điều đó.

Ví dụ: Liên kết này mở một video YouTube hiển thị Cách sử dụng Python để tạo plugin vim.

Các tập lệnh Vim không hoàn toàn hữu ích trừ khi người ta có ý định tạo một số bổ sung vim. Vì vậy, có điều gì đặc biệt không thể được thực hiện trừ khi tập lệnh vim chỉ được sử dụng?


2
Lưu ý rằng nhiều người sử dụng vimscript để định cấu hình (rất kỹ lưỡng) Vim của họ, mà không tạo hoặc phân phối bất kỳ plugin nào.
VanLaser

Câu trả lời:


12

Plugin của tôi là 99% trong VimL. Lý do là VimL có sẵn khi vim được cài đặt. Nó phức tạp hơn nhiều với các ngôn ngữ khác - ví dụ, rất hiếm khi tôi cài đặt Python trên các hộp cửa sổ nơi tôi sử dụng Vim.

Tất nhiên VimL rất cồng kềnh, nó thiếu nhiều tính năng thú vị, nhưng ít nhất, việc có thứ gì đó dễ mang theo hơn.

1% không có trong VimL là khi tôi cần tương tác với API bên ngoài cung cấp các ràng buộc python.

BTW, hầu hết mọi thứ bạn học về VimL đều có thể được sử dụng tương tác khi bạn chơi với các lệnh như :substitute. Hầu hết các ánh xạ hoặc macro không cần python.


1
Tôi thực sự không tìm thấy VimL mà cồng kềnh. Tất nhiên, tôi đồng ý rằng nó thiếu các tính năng và chức năng tuyệt vời của các ngôn ngữ cấp cao hơn như python, nhưng sau khi làm việc với nó một thời gian, tôi thấy VimL khá dễ chịu khi làm việc. Tôi nghĩ rằng danh tiếng cho VimL là tồi tệ hơn nó cần.
Karl Yngve Lervåg

Tốt. Tôi phải thừa nhận rằng nhiều tiến bộ đã được thực hiện kể từ vim5.x (khi tôi bắt đầu sử dụng nó). Nhưng vẫn có những trường hợp góc mà chúng ta phải làm những việc phức tạp. Xem ví dụ map()mong đợi các chuỗi hoặc (không liên quan) :map. Tôi thường phải chơi với / xung quanh việc đánh giá chuỗi để đi đến kết thúc của mình như tạo ánh xạ hoặc xử lý danh sách các lệnh gọi hàm, ...
Luc Hermitte

Viết plugin vim bằng ngôn ngữ khác dù thế nào cũng không giải phóng bạn khỏi việc học VimL, ​​bởi vì các ràng buộc với python / ruby ​​/ vv. là khá hạn chế và chắc chắn bạn sẽ kết thúc với execcác đoạn của VimL. Nó cho phép bạn viết logic cốt lõi của mình bằng ngôn ngữ mà bạn có thể có thể làm việc hiệu quả hơn rất nhiều, nhưng bạn vẫn cần học VimL khá nhiều.
hobbs

12

Nếu bạn có ý định viết các plugin, bạn chắc chắn nên đọc bài viết hay "Viết các plugin Vim", của Steve Losh ; không chỉ để quyết định xem bạn có gắn bó với VimL hay không, mà còn cho những lời khuyên thực hành tốt nhất.

Nó cũng chứa một cuộc thảo luận nhỏ về Scripting Vim với các ngôn ngữ khác :

Đầu tiên, sử dụng ngôn ngữ khác sẽ yêu cầu người dùng plugin của bạn sử dụng phiên bản Vim được biên dịch với sự hỗ trợ cho phiên bản đó. Trong thời đại ngày nay thường không phải là vấn đề, nhưng nếu bạn muốn plugin của mình chạy ở mọi nơi thì đó không phải là một lựa chọn.

Sử dụng ngôn ngữ khác thêm chi phí. Bạn không chỉ cần học Vimscript mà còn cả giao diện giữa Vim và ngôn ngữ. Đối với các plugin nhỏ, điều này có thể tăng thêm độ phức tạp cho dự án so với tiết kiệm, nhưng đối với các plugin lớn hơn, nó có thể tự trả tiền. Tùy bạn quyết định xem nó có xứng đáng hay không.

Cuối cùng, sử dụng ngôn ngữ khác không hoàn toàn cách ly bạn khỏi sự lập dị của Vimscript. Bạn vẫn cần học cách làm hầu hết mọi thứ trong Vimscript - sử dụng ngôn ngữ khác chỉ đơn giản là cho phép bạn gói gọn hầu hết những thứ này gọn gàng hơn những gì bạn có thể.

Kinh nghiệm của tôi là ngay cả khi một plugin không phải VimL tốt hơn, cuối cùng tôi vẫn chuyển sang một thay thế VimL thuần túy, chủ yếu là do tính di động. Vim chạy trên hầu hết mọi hệ thống (ngay cả các hệ thống cũ và xấu), và chi phí thiết lập các phụ thuộc hoặc vô hiệu hóa tạm thời plugin đó không có giá trị (đặc biệt là nếu bạn quên rằng bạn đã vô hiệu hóa nó và cố gắng sử dụng ánh xạ / lệnh của nó) .

Ngay cả khi dễ dàng hơn để thiết lập các phụ thuộc, bạn có thể gặp một số vấn đề (ví dụ: một số plugin dựa trên python không hoạt động 100% khi chúng được lấy từ các thư mục dùng chung trên Máy ảo). Đó là lý do tại sao một số plugin tôi viết chỉ sử dụng VimL.

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.