Chức năng giống như Grep cho Notepad ++?


52

Tôi muốn có một số chức năng giống như grep trong Notepad ++.

Trong phiên bản đơn giản nhất, tôi muốn có thể sao chép tất cả các dòng từ bộ đệm hiện tại có chứa từ này foosang bộ đệm mới. Tôi có thể sử dụng plugin TextFX để ẩn tất cả các dòng mà không có foo, nhưng điều đó không làm tất cả những gì tôi muốn (nó bị mất Alt- Tab, tôi không thể chỉ sao chép các dòng phù hợp, v.v.).

Câu trả lời:


79

Ctrl+ F-> chuyển đến tab Đánh dấu -> chuyển dòng Bookmark -> Nhấp vào Đánh dấu tất cả .

Chọn menu Tìm kiếm -> Bookmark -> Sao chép dòng Bookmarked .


5
Tốt đẹp, cảm ơn. Bạn cũng có thể 'cắt các dòng được đánh dấu' cho một người nghèo grep -v.
ARRG

2
Trong các phiên bản sau, ví dụ 5.4.5, không có bất kỳ tab "Đánh dấu" nào. Thay vào đó, có một hộp kiểm, "Đánh dấu dòng", trong tab "Tìm". Và "Sao chép các dòng Bookmarded" nằm trong menu "Tìm kiếm".
Peter Mortensen

@ARRG Không thể tìm thấy các dòng được đánh dấu cắt hoặc Sao chép các dòng được đánh dấu trong phiên bản hiện tại, nó ở đâu?
Nicolas Thery

Làm việc như Bùa mê :-)
Sundararaj Govindasamy

12

Tôi chỉ nhìn vào câu hỏi tương tự. Tôi không chắc nếu bạn biết; trong hộp thoại Tìm, bạn có thể Tìm tất cả trong Tài liệu hiện tại sẽ bật lên một cửa sổ ở phía dưới hiển thị các dòng khớp. Sau đó, bạn có thể sao chép nó vào một tài liệu mới.

Thật không may, nó bao gồm một số thông tin không liên quan trong kết quả (số dòng, v.v.), nhưng bạn có thể lọc ra bằng chế độ cột.


1
Số dòng được thêm vào thậm chí có thể là một tính năng :)
Frank Meulenaar

2
Bạn có thể tìm thấy plugin này hữu ích code.google.com/p/searchplus
Amarghosh

@Amarghosh Plugin đẹp, nhưng thiếu một chút công thái học (tại sao các nút và không có phím tắt?). Đẹp bắt :)
Benj

@Benji Alt-Q sẽ khởi chạy plugin. Mặc dù không có phím tắt trong cửa sổ plugin, điều hướng tab cơ bản đã được bật. Nếu có đủ sự quan tâm đến plugin, tôi sẽ cố gắng thêm nhiều tính năng hơn khi tôi có thời gian. Cảm ơn đã phản hồi :)
Amarghosh

2

Một giải pháp tuyệt vời khác là sử dụng plugin NppExec để thêm lệnh grep cho Notepad ++.

Ưu điểm chính so với giải pháp "Dấu trang" là nó chạy nhanh hơn nhiều đặc biệt là đối với các tệp lớn và bạn không phải sửa đổi tệp gốc của mình. Lưu ý rằng bạn phải tạo một tập lệnh nhỏ một lần để làm cho tính năng này có sẵn trong Notepad ++ của bạn.

Ví dụ về giải pháp của tôi là dành cho Windows và tôi sử dụng findstr , đây là một công cụ lệnh giống như grep có sẵn trên tất cả các máy Windows. Nhưng tất nhiên bạn cũng có thể sử dụng bất kỳ bản sao grep nào khác mà bạn chọn.

Bước 1: Cài đặt plugin NppExec

Plugins / Plugin Manager / Show Plugin ManagerTruy cập , cuộn xuống NppExec, chọn plugin này và nhấp vào Cài đặt. Bạn có thể phải khởi động lại Notepad ++ để hoàn tất quá trình cài đặt.

Bước 2: Tạo một tập lệnh nhỏ cho NppExec

Đi tới Plugins / NppExec / Execute, nhập đoạn mã sau và lưu nó dưới dạng "grep":

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

(vui lòng kiểm tra kỹ xem đường dẫn cho OUTFILE có hoạt động cho môi trường của bạn không)

Bước 3: Thêm một mục menu cho tập lệnh của bạn (Tùy chọn)

Đi tới Plugins / NppExec / Advanced Options, chọn tập lệnh "grep" bên dưới Associated scriptvà nhấp vào OK để lưu. Khởi động lại Notepad theo yêu cầu của NppExec để hoàn thành việc thêm mục menu mới.

Bước 4: Thêm lối tắt cho tập lệnh của bạn (Tùy chọn)

Đi tới Settings / Shortcut Mapper / Plugin commands, cuộn xuống để tìm lệnh script "grep" và xác định lối tắt cho nó. ví dụALT-G


Trước hết, cảm ơn vì một câu trả lời tuyệt vời mà đã chờ đợi nhiều năm để được nâng cấp ...: -) Tôi nghĩ rằng tôi đã gặp một số vấn đề với kịch bản, nó không hoạt động. Sau đó, tôi nhận thấy chúng tôi phải điều chỉnh các đường dẫn, v.v., nhưng bạn đã không đề cập rõ ràng đến nó nên tôi chỉ dán một cách mù quáng! Tôi làm việc rất nhanh, nó làm tôi chậm lại: -)
pgr

Cảm ơn rất nhiều về các thông tin phản hồi. Tôi sẽ thêm nó vào câu trả lời của tôi.
Erik Kalkoken

Một lưu ý nhỏ khác: $(FULL_CURRENT_PATH)sẽ không trả lại bất kỳ đường dẫn nào nếu tệp chưa được lưu. Bạn có thể mong đợi nó cư trú ở đâu đó (thư mục temp?), Nhưng thực sự không phải vậy. Tình huống tệp chưa được lưu này có thể khá phổ biến, bạn chỉ cần dán một cái gì đó từ nhật ký để grep nó ... chúng tôi có thể hoàn thiện tập lệnh này để lưu tệp nếu nó chưa được lưu - nhưng để đơn giản tôi sẽ tự nhắc mình lưu thủ công trước khi grepping. Cảm ơn.
pgr

Điều này có hoạt động không nếu chuỗi tìm kiếm chứa (các) không gian? hoặc các nhân vật đặc biệt khác?
G-Man nói 'Phục hồi Monica'

Vâng, nó hoạt động
Erik Kalkoken

-1

Bước 5: Tạo tập lệnh để lưu nhanh tài liệu và grep

Truy cập Plugins / NppExec / Execute, nhập đoạn mã sau và lưu nó dưới dạng "grep":

SET AUTOSAVEFILE local = "% tmp% \ NpPPautosave.tmp"
SET OUTFILE local = "% tmp% \ NpPPautosaveToGrep.temp"
NPP_SAVEAS "% tmp% \ NpPPfile.tmp"
InputBox "chuỗi đầu vào cho grep"
cmd / c findstr $ (INPUT ) $ (AUTOSAVEFILE)> $ (OUTFILE)
NPP_OPEN $ (OUTFILE)


Đâu là bước 1, 2, 3 và 4?
Pierre.Vriens

(1) Chúng tôi muốn, ở mức độ lớn nhất có thể, câu trả lời đó là độc lập. Có vẻ như (ít nhất) một bước phải được thực hiện trước khi ai đó có thể sử dụng câu trả lời của bạn (gợi ý: Bước 1); vui lòng bao gồm nó trong câu trả lời của bạn. (2) Dường như câu trả lời của bạn đang đứng trên vai câu trả lời của Erik Kalkoken . Nếu bạn sẽ làm điều đó, bạn nên nói rõ ràng như vậy. Tiết (Cont'd)
G-Man nói 'Phục hồi Monica'

(Tiếp theo) Nhiều (3) Câu trả lời của bạn có tốt hơn Erik không? Nếu vậy, hãy giải thích làm thế nào và tại sao. (Trên thực tế, sẽ rất tuyệt nếu bạn giải thích câu trả lời là gì và cách sử dụng nó.) Nếu không, tại sao bạn lại đăng nó? (4) Bạn có tin rằng bằng cách nào đó vượt trội hơn khi sử dụng tên tệp đầu ra được mã hóa cứng thay vì tên dựa trên tên tệp hiện tại không? (5) Có một số lợi thế khi chạy findstrtrên autosavefile hơn là tệp hiện tại không? (6) Tại sao câu trả lời của bạn sử dụng cả hai C:\tempC:\tmp? Vui lòng không trả lời ý kiến; chỉnh sửa câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
G-Man nói 'Phục hồi Monica'

(1) "một bước phải được thực hiện trước ai đó" - tất cả các Erik spteps từ 1 đến 4. (2) Bạn phải có 50 danh tiếng để bình luận. (để nhận xét bài đăng của Erik) (3) Có, câu trả lời của tôi nhỏ hơn, vì câu trả lời của Erik không hoạt động trước khi tài liệu được lưu vào ổ cứng. Tôi không muốn lưu tệp tạm thời chỉ cho grep nó. "câu trả lời làm gì và làm thế nào để sử dụng nó" - mã của tôi chỉ lưu văn bản đã mở trong notepad ++ vào tệp tạm thời trong hdd. Đây là dòng "NPP_SAVEAS" chỉ tự động lưu văn bản trên hdd. (4) Không phải! chính xác không. (5) Vâng! Lõi Erik không hoạt động, trước khi lưu vào ổ cứng, hãy xem câu trả lời của tôi (3).
Kasumiru

(6) Sory, tôi đã vội vàng và nhầm lẫn, cửa sổ của tôi cygwin có các thư mục tmp và temp. "Xin đừng trả lời trong các bình luận" - sory, nhưng tôi đã viết câu trả lời của mình trước khi đọc bình luận này
Kasumiru
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.