exコマンド出力でgrepする方法は?


10

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`


8

:filterコマンドは、これに簡単な、1行のアプローチです。

:filter /indent/ scriptnames

コマンドの出力からのパターンに一致する行のみを表示します。indent:scriptnames


私は:redirこれらのような質問に対する指向的な解決策をよく見ます。これらはうまく機能し、多くのパワーとオプションを提供しますが、多くの場合、それらは少しやり過ぎだと感じます。何かがあるかどうかをすばやく確認する必要があるだけです。:filterシンプルで使いたい瞬間にとても便利です。


1
これはよりクリーンで簡潔です。
jdhao

確かに、これは受け入れられる答えになるはずです。(ただし、edi9999の回答から多くのことを学んだため、
賛成投票

3

まず、出力を取得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個のファイルを持っている
アルバーガー

2
出力が:scriptnamesMagna Cartaより長い場合は、Tim Popeのスクリプトをインストールすることを検討してください。それは:Scriptnamesすべてのジャンクをquickfixリストに入れる機能を提供します。そこで、思い通りに検索したり、ファイルに保存したり、対応するスクリプトに移動したりできます。
佐藤桂

@AlBerger、リストが長すぎると、プラグインが多すぎたり、プラグインが大きすぎたり、記述が不十分だったりします。1つのプラグインの13ファイルは多すぎます。
romainl 2015年

NERDTree出力を:scriptnames短く保つために、すべての機能を単一のファイルに配置することを提案していますか?それはそれをよりよく書かれたプラグインにするでしょうか?
佐藤桂
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.