Làm thế nào để liệt kê các tùy chọn có sẵn của một plugin?


10

Gần đây tôi phát hiện ra rằng YouCompleteMecó một g:ycm_autoclose_preview_window_after_insertion tùy chọn tự động ẩn cửa sổ xem trước tài liệu sau khi thoát khỏi chế độ chèn và gần đây tôi cũng bắt đầu sử dụng vim, vì vậy đây là lần đầu tiên tôi đặt tùy chọn.

Vì vậy, tôi tự hỏi nếu các plugin khác tôi nhồi nhét trong môi trường vim của tôi có sẵn các tùy chọn, mà không cần tìm kiếm chúng theo cách thủ công.

Chúng có được đăng ký trên toàn cầu khi vim bắt đầu không, để một lệnh liệt kê chúng có sẵn, hoặc điều này không thể thực hiện được?


Bạn không thể. Các biến cho plugin cần phải được ghi lại. Không có cách nào để biết, những biến nào được sử dụng mà không cần đọc mã.
Christian Brabandt

Câu trả lời:


6

Vim không cung cấp bất kỳ cách nào để biết tất cả các tùy chọn plugin có thể.

Là một người viết plugin tôi có thể nói với bạn điều này khá phức tạp vì có nhiều cách khác nhau để tiến hành. Chẳng hạn, chúng tôi xem xét rằng nếu người dùng cuối không cung cấp giá trị cho tùy chọn .vimrcthì chúng tôi buộc tùy chọn này tồn tại và bằng với giá trị mặc định hoặc chúng tôi có thể nói: "hoặc lấy giá trị được đặt theo người dùng cuối hoặc sử dụng giá trị mặc định được mã hóa cứng ".

Với cách tiếp cận đầu tiên đó, người dùng cuối có thể xem danh sách các tùy chọn khả dụng với a c_CTRL-D, hoặc c_TAB, v.v.

Ngày càng có nhiều plugin chọn tổ chức tất cả các tùy chọn của chúng thành từ điển. tức là, thay vì có g:plugin_foo_optiong:plugin_bar_option, chúng ta có g:plugin.foo_optiong:plugin.bar_option. Điều này tránh làm ô nhiễm danh sách g:các tùy chọn toàn cầu, nhưng chúng tôi mất tự động hoàn thành dòng lệnh (cuối cùng tôi có thể mở một vấn đề của chủ đề, trên vim github).

Cho đến nay tôi chỉ nói về các lựa chọn toàn cầu. Hầu hết các plugin không cố gắng hỗ trợ các tùy chọn cụ thể hơn ngay cả khi chúng nên làm điều đó. Chẳng hạn, tôi lấy làm tiếc rằng cả YouCompleteMe cũng không thay thế , cũng không có nhiều plugin khác, sử dụng các tùy chọn cụ thể của dự án thay vì tùy chọn toàn cầu. Thật vậy, tùy thuộc vào dự án tôi đang làm việc mà tôi muốn đặt các tùy chọn tương ứng của chúng thành các giá trị khác nhau. Thật không may, đây không phải là một luồng công việc mà họ đã xem xét. Trong các plugin của tôi, nhiều tùy chọn có thể được chuyên môn hóa trên cơ sở dự án hoặc trên cơ sở bộ đệm. Gần đây tôi đã đưa ra một thử nghiệm về chủ đề này. Nhưng ngay cả với cặp g:plugin_option+ thông thường và đơn giản b:plugin_option, bên cạnh không thể biết tất cả các tùy chọn có sẵn.

Đôi khi, tôi cố gắng cung cấp các lệnh giúp thiết lập các tùy chọn như tôi đã thực hiện với trình bao bọc công cụ xây dựng hoặc thậm chí để hiển thị một số tùy chọn trong menu (khi sử dụng gvim), nhưng nó thực sự không hoàn hảo.

Tôi sợ rằng tài liệu này là thứ tốt nhất hiện có. Bạn thậm chí có thể thử a :h pluginname^D. Đây có lẽ là cách tiếp cận tốt nhất có sẵn.


Giải thích tuyệt vời về các lựa chọn đằng sau hậu trường. Và :h pluginnamethực sự là rất tuyệt vời! Vì vậy, tôi không phải đi xa vim nhiều lần để đọc tài liệu của các plugin khác nhau.
Iulian Onofrei

2

Vim không có tài liệu tham khảo về các tùy chọn có sẵn. điều tốt nhất bạn có thể làm là xem những gì đã được khởi tạo.

Đối với các tùy chọn tích hợp của Vim, có lệnh :set. Từ :h :set:

:se[t] Show all options that differ from their default value.

Bạn sẽ không thấy tất cả các tùy chọn có sẵn, chỉ những tùy chọn bạn đã sửa đổi.

Bạn cũng có thể sử dụng :letđể liệt kê giá trị của tất cả các biến được khai báo và :let g:cho danh sách các biến toàn cục. (Xem :h E121danh sách các biến bạn có thể hiển thị).

Lưu ý rằng những danh sách này không phải lúc nào cũng dễ đọc / phân tích. Đối với các plugin, tùy chọn tốt nhất của bạn là đọc tài liệu và tìm tùy chọn bạn cần.

Bạn cũng có thể quan tâm bởi mẹo wikia này làm thế nào để hiển thị môi trường vim


Chấp nhận câu trả lời khác vì nó dài dòng hơn, mặc dù điều này có các lệnh thú vị liên quan đến câu hỏi của tôi có thể giúp ích.
Iulian Onofrei
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.