Ex komut çıkışında nasıl grep?


11

Ex komut çıkışında bir model nasıl aranır? Örneğin, :scriptnameskomutun çıktısında bir dosya adı kalıbı nasıl aranır? Tüm tatlar için yardım grepve vimgrepsadece {file}arama yapmak için bir yer var.

Yanıtlar:


6

Şunları yapabilirsiniz:

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

Bu ne yapar:

: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

:filterKomut bu basit, tek satırlık bir yaklaşımdır.

:filter /indent/ scriptnames

Yalnızca komutun indentçıktısındaki desenle eşleşen satırları gösterir :scriptnames.


anlıyorum :redir gibi sorulara yönelik, iyi olan ve çok fazla güç ve seçenek sunan odaklı çözümler , ancak daha sık olmadığında biraz aşırıya kaçtıklarını hissediyorum, sadece bir şey olup olmadığını hızlıca kontrol etmeniz gerekiyor. :filtero anda kullanmak kolay ve ölü basit.


2
bu daha temiz ve daha özlü.
jdhao

Gerçekten de, bu kabul edilen cevap olmalıdır. (Edi9999'un cevabından çok şey öğrendim, dolayısıyla yukarı oy.)
toraritte

4

İlk olarak, çıktısını almanız gerekir scriptnames ve bir tampona koymanız gerekir.

Bunun için kullanabilirsiniz :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'

Bununla :scriptnamebirlikte, kendi gözlerinizle taranamayacak kadar uzun bir çıktı daha derin sorunların bir belirtisi olabilir.


Son cümleni kabul et. Çıktı bu kadar uzunsa, filtreleme, ex içinden değil, doğrudan komut satırından yapılmalıdır.
Wildcard

Üzgünüm, çok uzun bir liste için ne demek istediğini anlamıyorum. Örneğin sözdizimi bu listede 10 dosya, nerdtree başka 13 dosya vb. Var
Al Berger

2
Çıktınız :scriptnamesMagna Carta'dan daha uzunsa, Tim Pope'in senaryosunu yüklemeyi düşünebilirsiniz . :ScriptnamesTüm bu gereksiz dosyaları bir hızlı düzeltme listesine yerleştiren bir işlev sağlar . Orada kalbinizin içeriğinde arama yapabilir, bir dosyaya kaydedebilir veya ilgili komut dosyalarına gidebilirsiniz.
Sato Katsura

@AlBerger, çok uzun bir liste çok fazla eklenti ve / veya çok büyük veya kötü yazılmış eklenti anlamına gelir. Tek bir eklenti için 13 dosya çok fazla.
romainl

Kısa NERDTreeçıktısını korumak için tüm işlevlerini tek bir dosyaya koymasını mı öneriyorsunuz :scriptnames? Bu daha iyi yazılmış bir eklenti olur mu?
Sato Katsura
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.