ChatGPT解决这个技术问题 Extra ChatGPT

Convert tabs to spaces in Notepad++

How do I convert tabs to spaces in Notepad++?

I found a webpage that suggests it's possible, but I couldn't find any information about how to do it.

I would like to be able to do that, because some web forms don't respect code with tabs in them.


A
Ale

To convert existing tabs to spaces, press Edit->Blank Operations->TAB to Space.

If in the future you want to enter spaces instead of tab when you press tab key:

Go to Settings->Preferences...->Language (since version 7.1) or Settings->Preferences...->Tab Settings (previous versions) Check Replace by space (Optional) You can set the number of spaces to use in place of a Tab by changing the Tab size field.

https://i.stack.imgur.com/cDrHP.png


@Algina - you can change the settings for Notepad++ to automatically convert tabs to spaces - just go to: Settings - Preferences - Tab Settings - tick the box "Replace by Space" - like mrzli already described in this answer.
This is affected by the tab size defined in "Settings" -- "Preferences" -- "Tab Settings" -- "Tab size", naturally.
I just want to add that the path for me was: Settings => Language Menu/Tab Settings => Replace by space (In the bottom right corner). It is almost as mrzli said, but I had a hard time noticing where it said Tab Settings. (I know I am blind!)
There is no Settings -> Preferences... -> Tab Settings in Notepad++ v7.1 It's now under Settings -> Preferences -> Language
I'm using v7.2.2 and I can change tabs to spaces using Edit -> Blank Operations -> Tab to Space. Also the Tab Settings are now in Edit -> Preferences -> Language. Although, I don't understand what the Tab Settings does. I've checked the Replace by space box for javascript, but I still get a tab when I press the tab key. Shouldn't it print 4 spaces instead?
P
Peter Mortensen

Obsolete: This answer is correct only for an older version of Notepad++. Converting between tabs/spaces is now built into Notepad++ and the TextFX plugin is no longer available in the Plugin Manager dialog.

First set the "replace by spaces" setting in Preferences -> Language Menu/Tab Settings.

Next, open the document you wish to replace tabs with.

Highlight all the text (CTRL+A).

Then select TextFX -> TextFX Edit -> Leading spaces to tabs or tabs to spaces.

Note: Make sure TextFX Characters plugin is installed (Plugins -> Plugin manager -> Show plugin manager, Installed tab). Otherwise, there will be no TextFX menu.


Just a poorly named feature in a poorly placed menu.
The best answer for the question (perhaps not as the author intended it) is the tabs to spaces plugin offered below. The question asks for all tabs to spaces, while this answer only converts leading spaces. If, for example, you need to convert tabular data spaced with tabs while maintaining column positions, this answer will not help you. The plugin is the only Notepad++ solution to that question which I can see here.
I needed to go into the plugin manager and install the TextFX plugin, but after I had this the rest of the instructions were fine.
Answer which seems to be wrong. As Binary Phile indicates it only converts the leading tabs. In later versions there is also an option Edit -> Blank Operations -> TAB to space, but that does not work as requested either. As far as I see it there is no way currently in NP++ out of the box. Haven't tried the plugin Binary Phile mentions.
BTW - after switching to replace by spaces (2 spaces) I had to close and open NP++ otherwise it was buggy (still did 4 spaces sometimes)
M
Matthew Murdoch

Settings -> Preference -> Edit Components (tab) -> Tab Setting (group) -> Replace by space

In version 5.6.8 (and above):

Settings -> Preferences... -> Language Menu/Tab Settings -> Tab Settings (group) -> Replace by space


Version 5.9.3 has Edit->Blank Operations->TAB to Space. See answer by mrzli.
This changed again in version 7.1 (2016-10-16) (from "Language Menu/Tab Settings" to "Language")
P
Peter Mortensen

You need to replace \t - make sure you use extended mode!

https://i.stack.imgur.com/cp9j1.gif


just to emphasize, you need to put four space (or two, or whatever) in the "replace with" box.
you can replace the \t (tab) to any number of spaces, see wiki.answers.com/Q/How_many_spaces_is_a_tab
This will only work properly for tabs at the start of a line. E.g. in a line like this (using [tab] to represent a tab): "[tab]foo[tab]bar", with a tab size of 4 spaces, the first tab should be 4 spaces, but the second tab should be only 1 space.
@mercator - your case is entirely context-dependent. If that is the case, the OP can use 'Find Next'/'Replace' to jump to the next occurrence and make case-by-case decisions. The original question doesn't seem to indicate that concern.
@DaveE No, mercator's case is the universal case of how TAB works. Although mentioned in a comment and not in the original question, what essentially the OP wants is a transaperent switch from tabs to spaces, that is, he shouldnt know by looking after the conversion, that a conversion has been done. By taking the a selected text and expanding it to starts of lines, one could implement a calculation and do exactly what mercator implies. It is dependent only on the text expanded to line limits. So case by case decision is not needed. It is exactly what the expand command in UNIX does
K
Keshava GN

Follow this procedure to convert spaces to tabs or vice-versa:

https://i.stack.imgur.com/hPQn8.jpg


Available in Notepad++ v6.3.2 and several earlier versions.
P
Peter Mortensen

The easy way:

Highlight a single tab area Copy Bring up find/replace Paste into the find field Click into the replace field and hit the space bar Then replace all.


P
Peter Mortensen

I did not read all of the answers, but I did not find the answer I was looking for.

I use Python and don't want to do find/replace or 'blank operations' each time I want to compile code...

So the best solution for me is that it happens on the fly!

Here is the simple solution I found:

Go to:

Menu Settings -> Preferences Choose Tab Settings Choose your language type (e.g. Python) Select checkbox 'Use default value' Select checkbox 'Replace by space'

https://i.stack.imgur.com/8srV8.png


This changed again in version 7.1 (2016-10-16) (from "Language Menu/Tab Settings" to "Language" (and was "Tab Settings" in an even older version (as in this answer))).
P
Peter Mortensen

In version 5.8.7:

Menu Settings -> Preferences... -> Language Menu/Tab Settings -> Tab Settings (you may select the very language to replace tabs to spaces. It's cool!) -> Uncheck Use default value and check Replace by space.

https://i.stack.imgur.com/msdhb.png


What is meant by "the very language to replace tabs"?
This changed again in version 7.1 (2016-10-16) (from "Language Menu/Tab Settings" to "Language")
E
Elliot

There is no 'Edit Components' tab in the preferences setup. You need to go 'Language Menu/Tab Settings', there is an option in there to control tab behavior. You can even set it to work differently depending on the language of the file.


And after setting it there, use TextFX (TextFX -> TextFX Edit -> Leading spaces to tabs or tabs to spaces) as described earlier. This is definitely the way to go in the latest version of Npp.
This changed again in version 7.1 (2016-10-16) (from "Language Menu/Tab Settings" to "Language")
2
2 revs Keshava G N

I follow this simple way:

Double click (Highlight) single tab (ie: \t).

Press ctrl + F (Find/repace).

You may not see \t or single tab area on Find What: field. But don't worry.

Enter a space in Replace With: field.

Click Replce All .

Done! :)

See:

https://i.stack.imgur.com/nTHxq.jpg

Note: This method applies to reverse (Replace a space by a tab) case too.


If you select "Extended" from Search Mode, you can enter \t and it will also find the tab. The problem with this solution is it doesn't adjust the spacing for the tab, i.e., if a tab has a maximum of 5 spaces, your text before the tab may be 1-4 spaces...
S
Shawn Reeder

Settings > Preferences > Tab Settings Check the "replace by space". Notice above it there is Tab size: 4 Click on the four and a window will open with the option to change the value to another integer.

Put in your desired integer and press the ENTER key.

There you have it <3.


Thanks! To be preciser: Settings > Preferences > Language > Tab Settings Check the "replace by space". (Notepad++ v7.9)
P
Peter Mortensen

If you happen to work in a Unix environment, the expand command is what you need:


Isn't Notepad++ Windows-only?
It's available in linux via Wine. Performance is pretty bad though, YMMV