I do all my coding in vim and am quite happy with it (so, please, no ‘use a different editor’ responses), but have an ongoing annoyance in that the smartindent feature wants to not indent comments beginning with # at all. e.g., I want
# Do something $x = $x + 1; if ($y) { # Do something else $y = $y + $z; }
instead of vim’s preferred
# Do something $x = $x + 1; if ($y) { # Do something else $y = $y + $z; }
The only ways I have been able to prevent comments from being sent to the start of the line are to either insert and delete a character on the line before hitting # (a nuisance to have to remember to do every time) or turn off smartindent entirely (losing automatic indentation increase/decrease as I open/close braces).
How can I set vim to maintain my indentation for comments instead of sending them to the start of the line?
It looks like you’re coding in Perl. Ensure that the following are set in your .vimrc:
These will tell Vim to set the filetype when opening a buffer and configure the indentation and syntax highlighting. No need to explicitly set smartindent since Vim’s included Perl syntax file will set it (and any other Perl-specific customizations) automatically.
Note: having either
set smartindentand/orset autoindentin~/.vimrcmay prevent the solution from working. If you’re having problems, look for them.