ex 명령 출력에서 ​​grep하는 방법?


11

ex 명령 출력에서 ​​패턴을 어떻게 검색합니까? 예를 들어, :scriptnames명령 출력에서 파일 이름 패턴을 검색하는 방법은 무엇입니까? 모든 맛에 대한 도움말 grepvimgrep단지가 {file}검색을 수행 할 수있는 장소로.

답변:


6

당신은 할 수 있습니다 :

:redir => scriptn | sil exe 'scriptnames' | redir end | echo(system('grep pattern',scriptn))

그것이하는 일 :

: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`

12

:filter명령은 간단한 한 줄 접근 방식입니다.

:filter /indent/ scriptnames

명령 출력 에서 패턴 과 일치하는 행만 표시 합니다 .indent:scriptnames


나는 :redir이것들과 같은 질문에 대한 지향적 인 해결책을 자주 보았습니다. 괜찮고 많은 힘과 옵션을 제공하지만, 자주하지 않을 때 약간 과잉이라고 생각합니다. 무언가가 있는지 빨리 확인해야합니다. :filter순간에 사용하기 편리하고 간단합니다.


2
이것은 더 깨끗하고 간결합니다.
jdhao

실제로, 이것은 정답입니다. (edi9999의 대답하지만, 따라서 upvote에에서 많은 것을 배웠습니다.)
toraritte

4

먼저, 출력을 잡아서 scriptnames버퍼에 넣어야합니다.

당신은 :redir그것을 위해 사용할 수 있습니다 :

: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'

즉, :scriptname자신의 눈으로 스캔하기에 너무 긴 출력은 더 깊은 문제의 증상 일 수 있습니다.


마지막 문장에 동의하십시오. 출력이 너무 길면 ex가 아닌 명령 줄에서 직접 필터링해야합니다.
와일드 카드

죄송합니다. 너무 긴 목록에 대해 무슨 뜻인지 모르겠습니다. 예를 들어 syntastic은 그 목록에 10 개 파일, nerdtree 다른 13 개 파일 등이 있습니다.
Al Berger

2
출력 :scriptnames이 Magna Carta보다 길면 Tim Pope 's scriptease 설치를 고려할 수 있습니다 . 그것은 :Scriptnames모든 정크를 퀵 픽스 목록에 넣는 기능 을 제공 합니다. 거기에서 당신은 당신의 마음의 내용을 검색하거나, 파일로 저장하거나, 해당 스크립트로 갈 수 있습니다.
Sato Katsura

@AlBerger, 목록이 너무 길면 너무 많은 플러그인 및 / 또는 플러그인이 너무 크거나 잘못 작성되었음을 의미합니다. 단일 플러그인을위한 13 개의 파일이 너무 많습니다.
romainl

NERDTree출력을 :scriptnames짧게 유지하려면 모든 기능을 단일 파일에 넣어야한다고 제안하고 있습니까? 더 나은 플러그인이 될까요?
사토 카츠라
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.