How to make the tab character 4 spaces instead of 8 spaces in nano?

TabsTerminalIndentationNano

Tabs Problem Overview


When I press TAB in nano editor, the cursor will jump with 8 spaces like this:

def square(x):
        return x * x
def cube(y):
        return y * y * y

how can I set the tab stop width to 4 spaces to display like this:

def square(x):
    return x * x
def cube(y):
    return y * y * y

Tabs Solutions


Solution 1 - Tabs

If you use nano with a language like python (as in your example) it's also a good idea to convert tabs to spaces.

Edit your ~/.nanorc file (or create it) and add:

set tabsize 4
set tabstospaces

If you already got a file with tabs and want to convert them to spaces i recommend the expandcommand (shell):

expand -4 input.py > output.py

Solution 2 - Tabs

Command-line flag

From man nano:

-T cols (--tabsize=cols)
    Set the size (width) of a tab to cols columns.
    The value of cols must be greater than 0. The default value is 8.
-E (--tabstospaces)
    Convert typed tabs to spaces.

For example, to set the tab size to 4, replace tabs with spaces, and edit the file "foo.txt", you would run the command:

nano -ET4 foo.txt

Config file

From man nanorc:

set tabsize n
    Use a tab size of n columns. The value of n must be greater than 0.
    The default value is 8.
set/unset tabstospaces
    Convert typed tabs to spaces.

Edit your ~/.nanorc file (create it if it does not exist), and add those commands to it. For example:

set tabsize 4
set tabstospaces

Nano will use these settings by default whenever it is launched, but command-line flags will override them.

Solution 3 - Tabs

In nano 2.2.6 the line in ~/.nanorc to do this seems to be

set tabsize 4

Setting tabspace gave me the error: 'Unknown flag "tabspace"'

Solution 4 - Tabs

Setting the tab size in nano

cd /etc
ls -a
sudo nano nanorc

enter image description here

Link: https://app.gitbook.com/@cai-dat-chrome-ubuntu-18-04/s/chuaphanloai/setting-the-tab-size-in-nano

Solution 5 - Tabs

For future viewers, there is a line in my /etc/nanorc file close to line 153 that says "set tabsize 8". The word might need to be tabsize instead of tabspace. After I replaced 8 with 4 and uncommented the line, it solved my problem.

Solution 6 - Tabs

For anyone who may stumble across this old question ...

There is one thing that I think needs to be addressed.

~/.nanorc is used to apply your user specific settings to nano, so if you are editing files that require the use of sudo nano for permissions then this is not going to work.

When using sudo your custom user configuration files will not be loaded when opening a program, as you are not running the program from your account so none of your configuration changes in ~/.nanorc will be applied.

If this is the situation you find yourself in (wanting to run sudo nano and use your own config settings) then you have three options :

  • using command line flags when running sudo nano
  • editing the /root/.nanorc file
  • editing the /etc/nanorc global config file

Keep in mind that /etc/nanorc is a global configuration file and as such it affects all users, which may or may not be a problem depending on whether you have a multi-user system.

Also, user config files will override the global one, so if you were to edit /etc/nanorc and ~/.nanorc with different settings, when you run nano it will load the settings from ~/.nanorc but if you run sudo nano then it will load the settings from /etc/nanorc.

Same goes for /root/.nanorc this will override /etc/nanorc when running sudo nano

Using flags is probably the best option unless you have a lot of options.

Solution 7 - Tabs

It's easy to set tab size 4 at nano. There are some easy steps to do that:

  1. Go to the 'etc' directory(folder) from the home directory.
cd /etc
  1. There is a file name 'nanorc', need to edit it. You can see the lists of the files by running ls -a. Enter the file with your favorite editor like nano or gedit etc.
sudo nano nanorc
  1. You need to find out a line set tabsize 8.By default, the tab size is set to 8 spaces. There are around 300 lines. You can run this command to search the position of the line without scrolling. To do that exit(ctrl+Z) from nano and run
grep -n "set tabsize" nanorc

in my case, it's the 159th line. The output is:

159:# set tabsize 8
  1. Now open the 'nanorc' file again(shown in step 2). Go to the line number which was found in step 3. In nano to see line numbers in editor press alt+shift+3. You may find a line like this: # set tabsize 8

Uncomment the line(remove #) and put 4 instead of 8 and save it(ctrl+o then press enter). enter image description here

And then you are done. -- It's helpful to set tab size 4 if you use nano for python scripts.

>>In case it doesn't work perfectly, uncomment the next line also. In my case line 162, which is ' # set tabstospaces '

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFallen SatanView Question on Stackoverflow
Solution 1 - TabsSven RojekView Answer on Stackoverflow
Solution 2 - TabsApplesView Answer on Stackoverflow
Solution 3 - TabsHarry DeteringView Answer on Stackoverflow
Solution 4 - TabsPhạm Ngọc TưởngView Answer on Stackoverflow
Solution 5 - TabscalebView Answer on Stackoverflow
Solution 6 - TabsMILOView Answer on Stackoverflow
Solution 7 - TabsYakub Sadlil SeyamView Answer on Stackoverflow