Notepad++ seems to answer to my requests.
But... How can I replace a block of text with an other ? This block is composed of several lines of text, and the replacing block hasn't always the same size and the same number of lines.
The Find and Replace command seems to work only ont he same line.
Thank you in advance
Use the TextFX plugin (Ctrl-R) which comes with Notepad++.
That's what I am here for as well…. to suggest and request a more flexible Find/Replace. I used to use a program called "Search-Replace 98" and it had Amazing replacement functionality. As awesome as Notepad++ is (I can't get any work done with out it!), something more like Search-Replace would be great in Notepad++. I could search for a (multi-line) block of text and replace it with another block of text.
Not sure if this is possible, and maybe it sounds crazy but… is there a way to perform a search that looks (in pseudo) something like this …?
original file contents:
File1: Block of text with STUFF in it
File2: Block of text with JUNK in it
Block of text with ? in it
Block of text with ALL MY GOOD * in it
File1: Block of text with ALL MY GOOD STUFF in it
File2: Block of text with ALL MY GOOD JUNK in it
It is possible both by using TextFX's Quick Search/Replace, or using regular expressions in Notepad++, as \r, \n and \R are available.
No, Don HO.
Thanks for your replies but... that's Not like "Search Replace 98".
The TextFX plugin does a replace of a block of text, this is true -- for the currently viewed document. However, unless I am missing something it appears to me that it does not perform that task across "All Open Documents" nor, "Find/Replace in Files".
Search Replace 98 was an indispensable tool for this reason. As great a program as Notepad++ is I don't understand why a (GOOD) block text replacement function isn't a NATIVE ability of the application itself.
May be I didn't understand clearly what you need, but I think it's quite possible to get what you would like to, with Notepad++ :-)
First of all, for a test, create, in a folder, two files Test1.txt and Test2.txt.
The first one contains 5 identical lines : Block of text with STUFF in it
Block of text with STUFF in it
The second one contains 5 identical lines : Block of text with JUNK in it
Block of text with JUNK in it
Then, just follow the method, below :
Open the Find in Files dialog ( CTRL + SHIFT + F )
Type, in the Find what zone : (Block of text with )(.+?)( in it)
(Block of text with )(.+?)( in it)
Type, in the Replace with zone : \1ALL MY GOOD \2\3
\1ALL MY GOOD \2\3
Type, in the Filtrers zone : Test*.txt
Type, in the Directory zone, the full path of the folder, containing the two files Test1.txt and Test2.txt, or search this folder by clicking on the ... button
Select the Regular expression search mode
Uncheck, if necessary, the . matches newline option
Click on the Replace in Files button
Click on the OK button of the Are you sure confirmation dialog
Et voilà ! => The string ALL MY GOOD is added, after every string "Block of text with ", in all the lines of the two files Test1.txt and Test2.txt
"Block of text with "
Hi THEVENOT Guy,
he wants to be able NOT to use regex (or extended mode) and to be able to replace multiline strings. In principle this is possible if edit box in search dialog is multiline edit box. But it would require redesigning the dialog, not to mention that this is a non standard behavior for search/replace dialog.
If you select multiple lines and press Ctrl + F, then it works.
But it is impossible to drag some lines in the field of replacement
Hi CapCrunch, Loreia2 and Azjio,
Oh, Loreia2, I see ! So, I suppose that CapnCrunch would like, for example, three zones in the Search/Replace dialog.
The first would contain some string, before the real match wanted, that should be matched
The second would contain the exact text or regex to match
The third would contain an other string, after the real match wanted, that should be matched too
With that way, you avoid building regex with lookarounds, at the boundaries of the exact regex to match :-)
However, as the 1st and 3rd zones may also contain regexes, spliting the totality of the search string in three parts is not very useful ?! You would better build a complete regex to paste in the Find what zone !
Thanks, Azjio for your method that I didn't use, up to now. Of course, to do so implies a normal or an extended search only, as the multi-lines text, to paste, may contain some special regex characters !
I guess something similar should be converted to Notepad++ plugin. Essentially, it should just have two multiline boxes, and it should convert user input into "extended" search/replace operation in editor.
Although, I did some timid tries to program , in Python, with Loreia2's help, I'm not very acquainted with modern structured languages : I'm an old guy and I was trained, rather with the old Microsoft Qbasic than with C++ !!
So, I'd be very satisfied if I could program softwares like yours : TextReplace, RegExp ... :-) Certainly, you're quite able to do plugins for Notepad++. But, perhaps, you prefer to program independent softwares. It's quite your right !
Let go back to our discussion : finally, I admit that your multi-lines text feature in, both, search and replace fields, is easier to understand for people, not comfortable with regex's syntax !
With Notepad++, the only method to write EOL characters in the replacement field, in normal search mode, that I found out, is :
With an other editor ( Notepad, Wordpad,... ) open the config.xml file
Write your multi-lines text in the most recent Replace name tag, while replacing any EOL by the string
Save the config.xml file
Re-start N++ and open the Search/Replace dialog ( CTRL + H )
For example to replace the two lines text :
by the two lines text :
you should write, in the config.xml file, the most recent Replace name tag, below :
And, the most recent Find name tag should, already, be written :
Of course, this is a VERY UGLY way to proceed :-((
It's much better to use the Extended search mode and insert the symbols \r\n, \n, or \r, in the replacement field, each time you want your text go to a next line.
I post again my previous port, as a technical problem occurred ! Hope this new post will be OK !!
Write your multi-lines text in the most recent Replace name tag, while replacing any EOL by the string :
I do not know C++ language, so I can not write plugins. AutoIt3 - very easy language.
I run the EXE-file via the command line (shortcuts.xml).
The difference is that the plugin is loaded when you start Notepad++, and the program in the menu "Run" starts each time it is called.
(correct the previous post. "Edit" button)