Làm cách nào để xóa các dòng cụ thể trong Notepad ++?


94

Tôi đang xóa một số tệp mã (C #) và muốn xóa các vùng. Và tôi muốn xóa tất cả các dòng có chuỗi '#region'. Đó chỉ là một ví dụ, và tôi có thể nghĩ ra nhiều cách sử dụng khác, nhưng liệu điều đó có khả thi không?


2
Tôi bị cám dỗ để bỏ phiếu câu hỏi này là off topic ... Đó chủ yếu là một câu hỏi về notepad ++ và mô hình làm việc cụ thể, nhưng không nhất thiết phải lập trình liên quan: /
Andreas Niedermair

@AndreasNiedermair đồng ý
hiển thị

Câu trả lời:


39

Bạn có thể sử dụng menu Tìm kiếm -> Thay thế ... ( Ctrl+ H).

Nó có một tính năng biểu thức chính quy để thay thế. Bạn có thể sử dụng regex khớp với #region cũng như bất kỳ thứ gì khác trên dòng và thay thế nó bằng không gian trống.


Cảm ơn, tôi đã làm điều đó và nó hoạt động. Nhưng bây giờ tôi đang cố gắng thay thế \ n \ n chỉ bằng một \ n nhưng dường như không hiệu quả, có ý kiến ​​gì không?
Rismo

1
sử dụng tìm kiếm mở rộng để thay thế các chuỗi thoát (nút radio ngay trên regex)
John T

Cảm ơn John. Tôi đã làm điều đó và làm việc cho một ngắt dòng \ n, nhưng không cho hai. Tôi đang tìm kiếm \ n \ n và thay thế nó bằng \ n, nhưng nó không hoạt động. Nó làm việc cho bạn ?
Rismo

1
Nếu bạn nhập tài liệu trên windows, phần cuối dòng sẽ là \ r \ n. Phần cuối dòng kiểu UNIX là \ n.
John T

5
Cũng chỉ nhận thấy rằng TextFx -> TextFx Edit -> Delete Surplus Blank Lines thực hiện tương tự :)
Rismo

278

Notepad ++ v6.5

  1. Menu Tìm kiếm -> Tìm ... -> Đánh dấu tab -> Tìm nội dung: văn bản tìm kiếm của bạn , chọn Dòng đánh dấu , sau đó Đánh dấu tất cả . Thao tác này sẽ đánh dấu tất cả các dòng có cụm từ tìm kiếm, bạn sẽ thấy các vòng tròn màu xanh ở lề.

  2. Sau đó, menu Tìm kiếm -> Đánh dấu -> Xóa các Dòng đã Đánh dấu . Thao tác này sẽ xóa tất cả các dòng được đánh dấu.

Bạn cũng có thể sử dụng regex để tìm kiếm. Phương pháp này sẽ không dẫn đến một dòng trống như của John và sẽ thực sự xóa dòng.

Các phiên bản cũ hơn

  1. Menu Tìm kiếm -> Tìm ... -> Tìm gì: văn bản tìm kiếm của bạn , chọn Dòng đánh dấu và nhấp vào Tìm tất cả .
  2. Sau đó Tìm kiếm -> Đánh dấu -> Xóa các Dòng đã Đánh dấu

8
Cảm ơn bạn! Chà, tôi không biết rằng NP ++ đã làm điều này .. một tiết kiệm thời gian tuyệt vời. Tìm & đánh dấu dòng + xóa dòng. Tuyệt vời. Cảm ơn bạn!!
Matthew M.

thật là một hack, tại sao tôi không thể thay thế regex \ r \ n bằng "" :(
felickz

13
Đây là một trong những viên ngọc nhỏ mà tôi tìm thấy ở nơi tôi ước mình có thể ủng hộ nhiều hơn 1. Tôi không thể nói cho bạn biết tôi đã lãng phí bao nhiêu thời gian trong nhiều năm mà không bao giờ nhận ra điều này có sẵn! Chỉ có vấn đề là bây giờ tôi đoán mình cần phải làm việc hiệu quả hơn ...
Milner

1
Nếu bạn đang tìm kiếm điều này. 'Đánh dấu' hiện có tab riêng trên menu bật lên Tìm kiếm.
bunnybare

1
@bunnybare, cảm ơn. Tôi đã cập nhật câu trả lời cho phiên bản mới nhất.
Ray

4

Đây là một cách loại bỏ hoàn toàn các dòng có chứa "YOURTEXT":

  • Mở hộp thoại Thay thế
  • Nhập chuỗi tìm kiếm sau: .*YOURTEXT.*[\r]?[\n](thay thế YOURTEXT bằng văn bản của bạn)
  • Bật "Biểu thức chính quy"
  • Tắt ". Khớp với dòng mới"

Biểu thức chính quy đã cho khớp với cả cuối dòng Windows và Unix.

Nếu văn bản của bạn chứa các ký tự có ý nghĩa đặc biệt đối với biểu thức chính quy, chẳng hạn như dấu gạch chéo ngược, bạn sẽ cần phải loại bỏ chúng.


Tại sao bạn lại sử dụng lớp ký tự cho một ký tự?
Toto

4

Đây là tính năng phổ biến nhất của Notepad ++ mà tôi sử dụng để cập nhật mã của mình.

Tất cả những gì bạn cần làm là:

  • Chọn chuỗi chung có trong tất cả các dòng.
  • Nhấn Ctrl+F
  • Trong tab Đánh dấu , dán chuỗi lặp lại và chọn hộp kiểm Dòng đánh dấu .
  • Bấm vào Mark All
  • Bây giờ, hãy chuyển đến menu Tìm kiếmDấu trangXóa dòng đã đánh dấu

Bạn có thể tham khảo liên kết này để giải thích bằng hình ảnh.

http://www.downloadorinstall.com/best-notepad-tips-and-tricks-for-faster-work-and-development/


Liên kết dường như bị hỏng (hoặc có thể yêu cầu một lượng mã JavaScript đáng sợ để sử dụng).
Peter Mortensen,

2

Câu trả lời của Jacob cho John T hoạt động hoàn hảo để xóa toàn bộ dòng và bạn có thể Tìm trong Tệp với điều đó. Đảm bảo chọn "Biểu thức chính quy" ở dưới cùng.

Giải pháp: ^.*#region.*$


2
ông nói rằng ông muốn xoá dòng, không thay thế nó bằng một cái gì đó
felickz

1

Điều tra EOL của bạn là gì, \ n hoặc \ r \ n. Sau đó thay thế .*#region.*\r\nbằng không trong chế độ regexpr.


0

Bạn có thể thử thay thế # vùng bằng \ n, bật chế độ tìm kiếm mở rộng.


2
OP nói rằng ông muốn "xóa tất cả các dòng", bạn sẽ được thay thế nó bằng một dòng mới
felickz

0

Sử dụng regex và find & Replace, bạn có thể xóa tất cả các dòng có chứa #region mà không để lại các dòng trống. Vì một số lý do mà phương pháp của Ray không hoạt động trên máy của tôi, tôi đã tìm kiếm (.*#region.*\n)|(\n.*#region.*)và để trống hộp thay thế.

Regex đó đảm bảo rằng if #regionđược tìm thấy trên dòng đầu tiên, dòng mới kết thúc sẽ bị xóa và nếu nó được tìm thấy ở dòng cuối cùng, dòng mới trước đó sẽ bị xóa.

Tuy nhiên, giải pháp của Ray là giải pháp tốt hơn nếu nó phù hợp với bạn.

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.