How to make the tab character 4 spaces instead of 8 spaces in nano?
TabsTerminalIndentationNanoTabs 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 expand
command (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
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:
- Go to the 'etc' directory(folder) from the home directory.
cd /etc
- 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
- 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
- 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).
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 '