I just discovered I could indent and un-indent easily in Vi with : << and >>
By default it adds a tab
character. Now I'm wondering, could this be to a number of spaces via a configuration in my .vimrc
? And how should I do it?
Vi and Vim Stack Exchange is a question and answer site for people using the vi and Vim families of text editors. It only takes a minute to sign up.
Sign up to join this communityI just discovered I could indent and un-indent easily in Vi with : << and >>
By default it adds a tab
character. Now I'm wondering, could this be to a number of spaces via a configuration in my .vimrc
? And how should I do it?
Several settings controls the behavior:
First set expandtab
allows to replace the tabs by white spaces characters :h 'expandtab'
.
Then set shiftwidth=4
makes the tabulations be 4 white spaces :h 'shiftwidth'
.
You could also be interested by by :h 'tabstop'
which defines the number of spaces that a tab character in the file counts for.
As a bonus see :h 'smartindent'
and :h 'autoindent'
which are pretty useful.
In fact, aside from other answers, it was also possible to use autoindent
(to automatically indent newlines) and smartindent
(wich reacts to the synthax of the code). Then the shiftwidth
I wanted was 2
.
I answered my need by modifying $HOME/.vimrc
like below:
:set shiftwidth=2
:set autoindent
:set smartindent
Yes.
You can set shiftwidth
to any number of spaces.
This works both in vi
and vim
.
:set shiftwidth=2
Now, the width shifted for each >>
and <<
will be 2.
touch ~/.vimrc
echo "set ts=4 sw=4" >> ~/.vimrc
Shorthand for J.Chomel's answer.
touch
will create the file .vimrc in your home directory if it doesn't exists yet
Next, append tabstop and shiftwidth with your preferences to the .vimrc file.
tabstop
and shiftwidth
) it is usually more readable and since your don't need to type them that often in your config file there is not much gain to use short names.
– statox
Aug 22 '19 at 7:18
v
to get into visual mode=
=
is an operator.
– D. Ben Knoble♦
Feb 10 at 13:46
=
worked as it should in visual mode, and in non visual mode is ignored in place of the +
which adds a line above. Not sure what you mean.
– geedoubleya
Feb 25 at 17:59
tabstop
is effectively how many columns of whitespace a\t
character is worth. 2)shiftwidth
is how many columns of whitespace a “level of indentation” is worth. The>
action indents by 1 level. 3)softtabstop
is how many columns of whitespace atab keypress
or abackspace keypress
is worth. ... More on tab settings in vim in a medium article I wrote medium.com/@arisweedler/tab-settings-in-vim-1ea0863c5990 – Ari Sweedler Apr 10 '20 at 23:05