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.