Câu trả lời:
Bạn có thể làm:
:redir => scriptn | sil exe 'scriptnames' | redir end | echo(system('grep pattern',scriptn))
Những gì nó làm :
:redir => scriptn "redirect following output to variable scriptn
:sil exe 'scriptnames' "silently execute scriptnames
:redir end "end the redirection
:echo(system('grep pattern',scriptn)) "echo the call of grep witht that input with the pattern `pattern`
Các :filter
lệnh là một phương pháp đơn giản, một dòng này.
:filter /indent/ scriptnames
Sẽ chỉ hiển thị các dòng khớp với mẫu indent
từ đầu ra của :scriptnames
lệnh.
Tôi thấy :redir
các giải pháp được định hướng cho các câu hỏi như thế này thường rất tốt, cung cấp nhiều sức mạnh và tùy chọn, nhưng tôi cảm thấy chúng hơi quá mức khi thường xuyên hơn không, bạn chỉ cần nhanh chóng kiểm tra xem có gì đó không. :filter
là thuận tiện để sử dụng trong thời điểm và chết đơn giản.
Trước tiên, bạn cần lấy đầu ra của scriptnames
và đặt nó vào một bộ đệm.
Bạn có thể sử dụng :redir
cho điều đó:
:redir @a " redirect output of following ex commands to register a
:scriptnames " press G to get to the end of the output if it's too long
:redir END " end the redirection
:vnew " new buffer in vertical window
:put a " put content of register
/pattern " search for 'pattern'
Điều đó nói rằng, một :scriptname
đầu ra quá dài để được quét bằng mắt của bạn có thể là một triệu chứng của các vấn đề sâu hơn.
:scriptnames
dài hơn Magna Carta, bạn có thể cân nhắc cài đặt scriptease của Tim Pope . Nó cung cấp một hàm :Scriptnames
đặt tất cả rác đó vào danh sách quickfix. Ở đó bạn có thể tìm kiếm nó vào nội dung trái tim của bạn, lưu nó vào một tập tin hoặc đi đến các tập lệnh tương ứng.
NERDTree
nên đặt tất cả các chức năng của nó trong một tệp duy nhất để giữ đầu ra :scriptnames
ngắn không? Điều đó sẽ làm cho nó một plugin bằng văn bản tốt hơn?