ネットで調べても出てなさそうなので
pythonとかrubyとか#でコメントアウトする言語を書いてるときに勝手にインデントが解除される現象があっていらいらしていた。
解決策
setlocalnosmartindent
この1行を該当のファイルタイプのftpluginに追加。
例えばpythonだとruntimepathのftplugin/python.vimにこの1行を追記すればいい。
よくわからなかったら適当なフォルダに作っておいて.vimrc
に
setruntimepath+={適当なフォルダ}
と書けばいい。
蛇足
smartindentはC Likeな言語においてそれっぽく自動でインデントしてくれるという機能。
その中に#で始まる行をインデントできないようにするというのがあり、多分それが原因になっていると思う。
cinoptionsで細かく挙動を制御できるけど、インデントを維持するという設定はできないっぽい。
それでsmartindentを切ってやれば解決するんじゃね?と思った次第。