Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comments (#) go to start of line in the insert mode in Vim

Whenever I want to add a comment to an indented line in vim, I hit Shift-o (open a new row above the current, switch to insert mode) and start typing a Python comment (using #). That hash is then magically moved to the start of the line (no indentation) and I have to click tab a few times.

Anyone know how to work around it?

like image 310
Jonatan Littke Avatar asked Jan 14 '10 09:01

Jonatan Littke


2 Answers

I suppose you have set smartindent in your .vimrc

See :h smartindent

When typing '#' as the first character in a new line, the indent for that line is removed, the '#' is put in the first column.  The indent is restored for the next line.  If you don't want this, use this mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. When using the ">>" command, lines starting with '#' are not shifted right. 

I believe you don't need smartindenting while coding python. So just remove it from your settings or add the following to your .vimrc:

au! FileType python setl nosmartindent 
like image 112
Maxim Kim Avatar answered Sep 22 '22 18:09

Maxim Kim


try putting that in your .vimrc:

autocmd BufRead *.py inoremap # X<c-h># 

This will make that the insertion of the hash (pound) sign is always indented in Python source files.

like image 22
Haes Avatar answered Sep 24 '22 18:09

Haes