Notepad++ Multi editing

Viewed 180692

How can I have multiple cursors in Notepad++?

I will have a couple of tab delimited values . I need to write a query for all of these values. For example, if I get an Excel file with values like this:

1234 xyz pqr
2345 sdf kkk
...

I want to copy this whole piece of data into Notepad++ and write the query, inserting all the values at once.

Like this:

Insert into tbl (1234, xyz) where clm = 'pqr'
Insert into tbl (2345, sdf) where clm = 'kkk'
...

I used to do it with my previous text editor Ultraedit. Can this be done using Notepad++?

9 Answers

Notepad++ has a powerful regex engine, capable to search and replace patterns at will.

In your scenario:

  1. Click the menu item Search\Replace...

  2. Fill the 'Find what' field with the search pattern:

    ^(\d{4})\s+(\w{3})\s+(\w{3})$
    
  3. Fill the replace pattern:

    Insert into tbl (\1, \2) where clm = \3
    
  4. Click the Replace All button.

And that's it.

NotePad++ replace window screenshot

The easiest method to solve your problem (without going to a different editor or learning regex) is to record a macro.

  • Place your cursor at the start of your text, click the 'record' button in the ribbon, and then edit just that one row of text. You may only use arrow keys or ctrl+arrow keys to move around characters/words rather than clicking with your mouse. The 'home' and 'end' keys are also useful.
  • When you're finished with that one line, move your cursor (again without using the mouse) to the start of the next line.
  • Click the 'stop recording' button.
  • Click the 'play macro' button to check that it works on the next line as expected.
  • Click the 'run macro multiple times' to do it again, and again, and again... :P
One advantage of this over 'multi-editing' cursors is you don't have to manually click and place cursors on every single row. The second advantage is that you can work with tab-delimited data that doesn't have consistent size/length - just use ctrl+left/right to skip words.

Honestly, macros in N++ have saved about a year of my life.

You can use the plugin ConyEdit to do this. With ConyEdit running in the background, follow these steps:

  1. use the command line cc.spc /\t/ a to split the text into columns and store them in a two-dim array.
  2. use the command cc.p to print, using the contents of the array.
Related