Notepad ++ için Grep benzeri işlevsellik?


52

Notepad ++ 'ta grep benzeri bir işleve sahip olmak istiyorum.

En basit versiyonunda, kelimeyi içeren mevcut tampondan fooyeni bir tampona tüm satırları kopyalayabilmek istiyorum . Bütün satırları gizlemek için TextFX eklentisini kullanabilirim foo, ancak istediğim her şeyi yapmıyor (kaybolduğu zaman Alt- Tabsadece eşleşen satırları kopyalayamıyorum, vb.).

Yanıtlar:


79

Ctrl+ F-> İşaretle sekmesine git -> geçiş Yer İşareti satırına git -> Tümünü İşaretle'ye tıklayın .

Menüden Ara -> Yer İşareti -> Yer İşaretli Çizgileri Kopyala'yı seçin .


5
Güzel, teşekkürler. Zavallı bir adamın da 'yer imi satırlarını kesebilirsin' grep -v.
ARRG

2
Daha sonraki sürümlerde, örneğin 5.4.5, "İşaretle" sekmesi yoktur. Bunun yerine, "Bul" sekmesinde "Satır Satırı" onay kutusu vardır. Ve "Bookmarded Lines Kopyala" dir "Ara" menüsünde dir.
Peter Mortensen,

@ARRG Geçerli sürümde kesilmiş yer imi olan satırları veya Yer imi olan satırları kopyalayamıyor musunuz?
Nicolas Thery

Cazibe gibi çalışma :-)
Sundararaj Govindasamy

12

Ben de aynı soruyu araştırıyordum. Farkında mısın bilmiyorum; Bul iletişim kutusunda, altta eşleşen satırları gösteren bir pencere açacak olan Geçerli Belgede Tümünü Bul'u kullanabilirsiniz . O zaman bunu yeni bir belgeye kopyalayabilirsiniz.

Ne yazık ki, sonuçlarda bazı yabancı bilgiler içeriyor (satır numarası vb.), Ancak bunu sütun modunu kullanarak filtreleyebilirsiniz.


1
Eklenen satır numaraları bile bir özellik olabilir :)
Frank Meulenaar

2
Bunu eklentisi yarayabilecek code.google.com/p/searchplus
Amarghosh

@Amarghosh Güzel bir eklenti, ancak biraz ergonomiden yoksun (neden düğmeler ve klavye kısayolları yok?). Nice catch :)
Benj

@Benji Alt-Q eklentiyi başlatacak. Eklenti penceresinde hiçbir kısayol tuşu olmamasına rağmen, temel sekme gezintisi etkinleştirildi. Eklentiye yeterince ilgi varsa, zaman kazandıkça daha fazla özellik eklemeye çalışacağım. Geri bildiriminiz için teşekkür ederiz :)
Amarghosh

2

Bir başka harika çözüm de Notepad ++ 'a grep komutu eklemek için NppExec eklentisini kullanmaktır.

"Yer İmleri" çözümüne göre en büyük avantaj, özellikle büyük dosyalar için çok daha hızlı çalışması ve orijinal dosyanızı değiştirmenize gerek kalmamasıdır. Bu özelliği Not Defteri'nizde ++ kullanmak için küçük bir komut dosyası oluşturmanız gerektiğini unutmayın.

Benim çözüm örneğim Windows içindir ve tüm Windows makinelerinde bulunan grep benzeri bir komut aracı olan findstr'yi kullanıyorum . Ama tabii ki seçtiğiniz herhangi bir diğer grep klonunu da kullanabilirsiniz .

Adım 1: NppExec eklentisini kurun

Git Plugins / Plugin Manager / Show Plugin Manager, NppExec'e in, bu eklentiyi seç ve Kur'a tıkla. Yükleme işlemini tamamlamak için Not Defteri ++ 'nı yeniden başlatmanız gerekebilir.

Adım 2: NppExec için küçük bir komut dosyası oluşturun

Git Plugins / NppExec / Execute, aşağıdaki betiği gir ve "grep" olarak kaydet:

SET local OUTFILE = "c:\temp\$(FILE_NAME).temp"
INPUTBOX "Input filter string"
cmd /c findstr $(INPUT) "$(FULL_CURRENT_PATH)" >$(OUTFILE)
NPP_OPEN $(OUTFILE)

(OUTFILE yolunun ortamınız için uygun olup olmadığını iki kez kontrol edin)

3. Adım: Komut dosyanız için bir menü öğesi ekleyin (İsteğe bağlı)

Git Plugins / NppExec / Advanced Options, altında "grep" betiğini seç Associated scriptve kaydetmek için Tamam'a tıkla. Yeni menü öğesini eklemeyi tamamlamak için NppExec tarafından istendiği şekilde Not Defteri'ni yeniden başlatın.

4. Adım: Komut dosyanız için bir kısayol ekleyin (İsteğe bağlı)

Git Settings / Shortcut Mapper / Plugin commands, komut dosyası komut "grep" bulmak için aşağı kaydırın ve bunun için bir kısayol tanımlayın. ÖrneğinALT-G


Her şeyden önce, yıllarca yenilenmeyi bekleyen büyük bir cevap için teşekkür ederim ...: -) Senaryoda bazı problemler yaşadığımı sanıyordum, işe yaramadı. Sonra yolları vs. uyarlamamız gerektiğini fark ettim, ama açıkça bahsetmediniz, bu yüzden sadece kör yapıştırdım! Çok hızlı çalışıyorum beni yavaşlatıyor: -)
pgr

Geri bildiriminiz için çok teşekkür ederim. Bunu cevabımı ekleyeceğim.
Erik Kalkoken

Başka bir küçük not: $(FULL_CURRENT_PATH)dosya henüz kaydedilmediyse hiçbir yol döndürmez. Bir yerde kalmasını bekleyebilirsiniz (geçici dizin?), Ama gerçekten değil. Bu kaydedilmemiş dosya durumu oldukça yaygın olabilir, sadece bir günlükten grep yapmak için bir şey yapıştırın ... dosyayı henüz kaydetmediyse kaydetmek için mükemmel hale getirebiliriz - ama basitlik için sadece kendime kaydetmeyi hatırlatacağım el sıkışmadan önce Teşekkürler.
pgr

Arama dizgisinde boşluk varsa bu işe yarar mı? veya diğer özel karakterler?
G-Man

Evet bu işe yarıyor
Erik Kalkoken

-1

Adım 5: Hızlı kaydetme ve grep belgesi için komut dosyası oluşturma

Plugins / NppExec / Execute uygulamasına gidin, aşağıdaki betiği girin ve "grep" olarak kaydedin:

SET yerel AUTOSAVEFILE = "% tmp% \ NpPPautosave.tmp"
SET yerel OUTFILE = "% tmp% \ NpPPautosaveToGrep.temp"
NPP_SAVEAS "% tmp% \ NpPPPfile.tmp"
INPUTBOX "GREP için giriş dizesi"
cmd / cp $ ($ $ $ $ bul ) $ (AUTOSAVEFILE)> $ (
OUTFILE ) NPP_OPEN $ (OUTFILE)


Adım 1, 2, 3 ve 4 nerede?
Pierre.Vriens

(1) Cevapların yalnız kalmasını, mümkün olduğunca büyük ölçüde tercih ediyoruz. Birisi cevabınızı kullanmadan önce yapılması gereken (en azından) bir adım var gibi görünüyor (ipucu: Adım 1); Lütfen cevabınıza ekleyin. (2) Yanıtınız Erik Kalkoken'in cevabının omuzlarında duruyor . Bunu yapacaksanız, açıkça söylemelisiniz. … (Devam Ediyor)
G-Man, 'Monica’yı

(Devam ediyor)… (3) Cevabınız Erik'inkilerden daha mı iyi? Eğer öyleyse, lütfen nasıl ve neden olduğunu açıklayın. (Aslında, cevabın ne yaptığını ve nasıl kullanılacağını açıklarsanız iyi olurdu.) Olmazsa, neden gönderdiniz? (4) Geçerli dosya adına göre değil, kodlanmış bir çıktı dosya adı kullanmanın bir şekilde üstün olduğuna inanıyor musunuz? (5) findstrGeçerli dosyadan ziyade otomatik kaydetme dosyası üzerinde çalışmanın bir avantajı var mı ? (6) Neden Cevabınız kullanıyor hem C:\temp ve C:\tmp? …… Lütfen yorumlara cevap vermeyin; cevabınızı daha net ve daha eksiksiz hale getirmek için düzenleyin .
G-Man 'Reeantate Monica' Dedi

(1) "Birinden önce yapılması gereken bir adım" - Tüm Erik 1'den 4'e fırlar. (2) Yorum yapmak için 50 itibara sahip olmanız gerekir. (Erik gönderisine yorum yapmak için) (3) Evet, cevabım daha küçük, çünkü Erik cevabı çalışmadı, çünkü belge sabit diske kaydedilmeden önce. Ben sadece grep için geçici dosya kaydetmek istemiyorum. "cevabım ne yapar ve nasıl kullanılır" - kodum sadece notepad ++ 'da açılan metni hdd içinde geçici dosyaya kaydeder. Bu satır "NPP_SAVEAS" sadece otomatik olarak hdd'ye metin kaydetmedir. (4) Hayır! kesin değil. (5) Evet! Erik çekirdeği çalışmıyor, sabit diske kaydetmeden önce (3) cevabımı ara.
Kasumiru

(6) Sory, acelem vardı ve yanlış oldum, windows cygwin'in tmp ve temp dirsleri var. "Lütfen yorumlarda cevap verme" - pardon, ancak bu yorumu
okumadan
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.