Grep -n'nin sonucu göz önüne alındığında, o satırda vim'i nasıl açabilirim? (yalnızca klavye kullanarak)


9

Çalıştırıp grep "keyword" -naşağıdaki sonuç listesini aldığımda :

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword

Bulunan satırdaki dosyalardan birini (listede ikinci) nasıl açabilirim?

Şimdi çıktıyı faremi kullanarak kopyalayıp sonra kopyalayıp kopyaladığım satır numarasıyla vimekliyorum +. (yani vim a/b/c +70dosya adını almak için fare kopyasını ve satır numarasını almak için başka bir fare kopyasını kullanarak yazıyorum [veya yeterince kısa olduğunda sadece elle kopyalarım])

Klavye kısayoluyla yapmanın bir yolu var mı?


Böyle bir şey deneyebilirsiniz: echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset.
Arkadiusz Drabczyk

2
Ayrıca, Vim'i daha verimli kullanmakla ilgileniyorsanız, özel Vi ve Vim Stack Exchange sitesine göz atın .
muru

Yanıtlar:


14

İki şey:

  1. Vim'in biraz desteği var grep.

    Eğer Vim açın ve yaparsanız :grep keyword ..., Vim dolduran QuickFix listesini sonuçlarla ve ilk dosyaya atlar. Daha sonra atlayabilirsiniz n inci QuickFix ile giriş :cc n(ve diğer komutlar).

  2. Yukarıda belirtilen hızlı düzeltme listesini grep çıktısını kullanarak doldurabilirsiniz:

    vim -q <(grep -n keyword ...)
    

    Ve sonra yukarıda belirtilen hızlı düzeltme gezinme komutlarını kullanın.

Her ikisi de grep çıktısıyla manuel olarak oynamaktan daha kolaydır.

(2) 'ye alternatif olarak, grep'in çıktısını bir dosyaya kaydedebilir ve bunun yerine Vim'i açmayacağınızı düşünüyorsanız:

grep ... | tee log
vim -q log

Git durumunda aynı yöntemi kullanmaya çalışmak, boşuna :( - vim -q <(git status | grep modifiye)
CIsForCookies 11:18

3
@CIsForCookies Bu, grep -n( <filename>:<line>: ...) ile aynı biçimde olmayacak . Git için kaçak eklentiyi kullanıyorum ve sonra önemli olan :Gstatus, istenen dosyaya gidin ve Enter tuşuna basın.
muru

BTW, ~ / grep alias-q >()
.bashrc'imi

2

Yapabildiğiniz gibi, muru cevapladığı gibi grep için destek olmasaydı:

:cexpr system("grep -n keyword")

git grepÖrneğin başka bir komutla kullanılabilir .

Ayrıca, çıktıyı bir arabellekte açabilir ve üzerinde "cbuffer" kullanabilirsiniz.

Bununla ilgili kılavuzdaki hızlı düzeltme bölümüne bakın .

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.