VSCode/Tips/HTMLファイル編集でのスマートインデントのような挙動を抑止する

VSCode/Tips/HTMLファイル編集でのスマートインデントのような挙動を抑止する

追記 2019-11-29 現在、おそらく次のリリースの VSCode からできる。 最後を参照。

結論として、2019-04 現在、これはできない。

正式にはスマートインデントとは言っていないが、VSCode でのインデント制御は所謂スマートインデントのような挙動になっている。

カーソルがこのような位置で改行すると

<p>|

自動的にこの位置にくる

<p>
    |

フォーマッターの機能でここでこのように入力すると

<p>
    </p>

それを認識してこのように引き下げてくれるのだが

<p>
</p>

人間がそんな脳みその使い方するか?

プログラマの頭には次の瞬間は何をするかは決まっている。 閉じタグを入力するか、タグの内部を書いていくかは頭の中にある。 だから次の瞬間その操作をするだけでその内容によって戻るなんて動きしてもらっては困る

ケースバイケースでやってほしくない動きをやってそれ戻すということをやるという挙動になる 自分がやらなければならないことをやるのに比べてイライラ感が大きい。

次は次のタグを書くか?それとも中を書くか?ではここで上の行が勝手にインデントされて空行が入った状態までいって、次の改行したらそれがなくなるみたいな挙動するか?しないだろ?この基準でなんでもこんな動きしだしたらそれをどこまでやるんだよ。だったら最初からやらんほうがマシ。これで省略できるキーストロークは前行と同じだけインデントする場合と比較してたったタブキーの1ストロークしか違いがない。

おそらく操作時間にしてもスマートでないなら人間側にもエディタ側にもほとんど判断が介入しないので早い。 スマートより馬鹿のほうが早いのだ。

なのでこれを抑止したいのだが・・・・

Disable autoindent · Issue #5446 · Microsoft/vscode · GitHub

で議論が白熱し Open のまま

結論として 2019-04 現在、HTMLファイル編集において、このスマートインデント的な挙動を排除して前行と同じだけインデントするという機能は VSCode には無い。

2019-11-29 追記 Convert editor.autoIndent to 'none' | 'keep' | 'brackets' | 'advanced' | 'full' by alexandrudima · Pull Request #85727 · microsoft/vscode

このプルリクによって設定値が boolean 値からいくつかの設定に変えられるようになって、マージ済みである。 おそらく次のバージョンからこの設定値を keep にすることによってこのスマートインデント的挙動は抑えられるだろう

editor/vscode/tips/html_file_edit_disable_smartindent_befavior.txt · 最終更新: 2019-11-29 10:15 by ore