2.3 VSCode インライン提案、オートインデント

インライン提案

VSCodeで編集してたら print(1+2) の下の行に勝手に print(3+4) がうすく表示されていました。Delでも消えないのですが?

ありますあります、それ 😊
VS Code の「ゴーストテキスト(インライン提案)」が出ている状態です。
AI/補完機能が「次に書きそうなコード」を予測して出しているのです。

結論から言うと:
不採用(消す)
Esc
これで その場の薄い文字だけ消えます。
採用する場合
Tab
押すと、実コードとして確定します。

なぜ薄い print(3+4) が勝手に出るの?

これは 実際のコードではありません。
VS Code が「あ、次はこう書きたいんじゃない?」と予測して薄く表示している提案です。

主な正体はこのどれか👇

Copilot
IntelliSense(コード補完)
Python 拡張の補完機能

print(1+2) を書いたので
👉「次も計算式の print だろう」と推測して
print(3+4) を出した、というわけです。

もう出したくない場合(恒久対策)

方法A:Copilot を使っている場合

左の拡張機能(四角いアイコン)
GitHub Copilot
無効化(Disable)

方法B:インライン補完をオフにする(おすすめ)

設定画面を開く
Ctrl + ,
検索欄に:inline suggest

「Editor: Inline Suggest」
→ チェックを外す ❌

これで 薄い文字は一切出なくなります。

なぜ「なかなか消えなかった」のか?

これはバグではなく仕様で、
Backspace → 消えない
Delete → 消えない
なぜなら「まだ入力されていない文字」だからです。

だから
👉 Esc でキャンセル
👉 Tab で採用

この2択しかありません。
初心者のうちはオフでOK?

👉 今はオフで全然OKです。むしろその方が理解が深まります。
補完は、文法に慣れてから「楽をしたい」と思った時で十分です。

オートインデント

for i in range(3):を入力してEnterを押したら自動的にインデントが入りました。なぜ勝手に入るのですか?

VS Code は : を見た瞬間にこう判断します👇
「あ、次の行は字下げ必須だな」
その結果…Enter を押す
自動で スペース4つ分 入る

これは 親切機能です(勝手にやってるわけではありません)

for i in range(3):
    print(i)
↑ オートインデントが入ります
理由
Python では、
「:(コロン)」の次は必ずインデントされたブロック
というルールがあるからです。

対象になる構文
以下は全部「Enter → 自動インデント」されます。

if 条件:
for i in range(3):
while 条件:
def func():
class A:

Enter を押したら勝手にインデントされる仕組み

実際に起きていること
VS Code は裏でこうしています:
今の行を解析、Python文法的に「ブロック開始」か判断
次の行に 適切なインデントを自動挿入

つまり
👉 Python専用の文法理解 + エディタの機能の合わせ技です。

Enter 後にインデントを戻したいとき

方法①:Backspace
for i in range(3):
▮←ここでBackspace

方法②:Shift + Tab(おすすめ)
インデントを 1段戻す
Pythonでは超頻出

まとめ

オートインデント
Pythonの文法を守るため
: の次で自動発動
敵ではなく味方

操作チート表
操作       効果
Enter       次の行へ+自動インデント
Shift + Tab   インデント戻す
Tab      インデント増やす
Backspace   1段削る