VSCodeの「Shift+Enter」は、使用している機能や拡張機能、カーソルがある場所によって動作が変わるショートカットです。
特にPython開発では、コードをPython REPLへ送って実行する操作としてよく使われます。
一方で、検索ボックスでは前の検索結果へ移動したり、PowerShellの統合ターミナルでは改行に使われたりする場合があります。
そのため、VSCodeのShift+Enterは「必ず特定の1つの処理を実行するキー」ではなく、状況に応じて役割が変わるショートカットとして理解しておくことが大切です。
PythonでShift+Enterを使う方法
VSCodeでPythonを使っている場合、Shift+Enterは非常に便利なショートカットです。
MicrosoftのPython拡張機能を利用している環境では、選択したコードやカーソル付近のコードをPython REPLへ送って、その場で実行できます。
Python拡張機能をインストールする
PythonでShift+Enterを使う場合は、Microsoftが提供しているPython拡張機能をインストールしておくのが基本です。
VSCodeのExtensions画面を開き、「Python」と検索してMicrosoft製のPython拡張機能をインストールします。
また、Pythonコードを実際に実行するには、PC側にもPython本体をインストールしておく必要があります。
Python拡張機能とPython本体は別のものなので、拡張機能だけではコードを実行できません。
選択したコードをShift+Enterで実行する
Pythonファイルでコードの一部を選択し、Shift+Enterを押すと、選択したコードをPython REPLへ送信して実行できます。
たとえば、次のようなコードがあるとします。
a = 10
b = 20
print(a + b)
print("finish")
この中から、
a = 10
b = 20
print(a + b)
だけを選択してShift+Enterを押すと、その部分だけを実行できます。
ファイル全体を毎回実行する必要がないため、コードの一部分だけを確認したいときに便利です。
選択していない場合はSmart Sendが動作する
Python拡張機能では、コードを選択していない状態でShift+Enterを押すと、Smart Sendが利用されます。
Smart Sendは、カーソル位置を基準に実行可能な最小単位のコードを判断してPython REPLへ送信する機能です。
そのため、単純に現在の物理的な1行だけが実行されるとは限りません。
たとえば、次のような条件分岐があります。
if age >= 18:
print("adult")
else:
print("minor")
このような複数行で構成されるコードでは、Smart Sendが構文を考慮し、実行可能なコードのまとまりとして送信します。
参考サイト
Smart Sendを無効にする方法
Smart Sendを使わず、より単純な動作に変更したい場合は設定から無効化できます。
settings.jsonでSmart Sendを無効にする
VSCodeのsettings.jsonに次の設定を追加します。
{
"python.REPL.enableREPLSmartSend": false
}
Smart Sendは通常有効になっているため、従来型の動作を使いたい場合にこの設定を変更します。
Smart Sendを無効にすると、カーソル位置から構文を解析してコードブロックを判断する動作が行われなくなります。
Python REPLでShift+Enterを使う方法
REPLは、入力したPythonコードをその場で実行し、結果を確認できる対話型の実行環境です。
Shift+Enterと組み合わせることで、Pythonファイル内のコードを少しずつREPLへ送信できます。
Python REPLを起動する
コマンドパレットを開きます。
WindowsやLinuxでは、
Ctrl + Shift + P
Macでは、
Cmd + Shift + P
を使用します。
その後、
Python: Start Terminal REPL
などのREPL起動コマンドを選択します。
VSCodeやPython拡張機能のバージョンによっては、
Python: Start REPL
と表示される場合もあります。
PythonファイルからREPLへコードを送る
REPLを起動した状態で、Pythonファイル内のコードを選択し、
Shift + Enter
を押します。
すると、そのコードがPython REPLへ送信されて実行されます。
たとえば、
numbers = [10, 20, 30]
sum(numbers)
を選択してShift+Enterを押せば、結果をすぐに確認できます。
この方法は、処理を少しずつ確認したい場合や、データ分析、ライブラリの動作確認などで便利です。
Native REPLでShift+Enterを使う方法
VSCodeのPython拡張機能では、通常のターミナルREPLとは別にNative REPLを利用できる場合があります。
Native REPLはVSCode内に統合されたPython向けの対話型実行環境です。
Native REPLを起動する
コマンドパレットを開き、
Python: Start Native REPL
を実行します。
Shift+Enterの送信先をNative REPLに変更する
Shift+Enterで実行したコードをNative REPLへ送信したい場合は、次の設定を使用します。
{
"python.REPL.sendToNativeREPL": true
}
この設定を有効にすると、Pythonの選択範囲やコードをNative REPLへ送信できます。
一方、
{
"python.REPL.sendToNativeREPL": false
}
にすると、従来のPythonターミナル内REPLへ送信する動作を利用できます。
JupyterやInteractive WindowでShift+Enterを使う方法
VSCodeでJupyter機能を利用している場合も、Shift+Enterはよく使われます。
ただし、Pythonファイル上でのShift+Enterと、Interactive WindowやNotebook内でのShift+Enterでは意味が異なる場合があります。
Interactive Windowでコードを実行する
Python Interactive Windowでは、
Enter
で改行し、
Shift + Enter
で入力したコードを実行できます。
たとえば、
x = 100
y = 200
x + y
を入力してShift+Enterを押すと、その場で結果を確認できます。
通常のターミナルよりもNotebookに近い感覚でコードを試せるのが特徴です。
# %%でコードセルを作る
通常の.pyファイルでも、
# %%
x = 10
y = 20
print(x + y)
# %%
name = "VSCode"
print(name)
のように# %%を記述すると、コードセルとして扱えるようになります。
コードセルは、エディター上に表示される「Run Cell」などから実行できます。
また、Jupyter関連機能ではCtrl+Enterなどのショートカットがセル実行に使われることもあります。
そのため、「# %%セルは必ずShift+Enterで実行する」と考えるのではなく、セル実行とPythonのShift+Enterによるコード送信は分けて理解するとよいでしょう。
検索画面でShift+Enterを使う方法
Shift+EnterはPythonだけでなく、VSCodeの検索機能でも利用できます。
エディター内検索で前の結果へ戻る
WindowsやLinuxでは、
Ctrl + F
Macでは、
Cmd + F
を押すと、現在開いているファイル内を検索できます。
検索結果が複数ある場合、
Enter
を押すと次の一致箇所へ移動します。
一方、
Shift + Enter
を押すと、1つ前の一致箇所へ戻ります。
たとえば「user」という文字列を検索している場合、
Enter
で次のuserへ移動し、
Shift + Enter
で前のuserへ戻れます。
長いコードを確認するときに便利な操作です。
PowerShellターミナルでShift+Enterを使う方法
Windows環境でVSCodeの統合ターミナルにPowerShellを使用している場合、Shift+Enterが改行として機能することがあります。
Shell Integrationが有効な場合は改行できる
VSCodeのShell Integrationが有効なPowerShellでは、
Shift + Enter
がAddLineとして機能します。
通常のEnterを押すとコマンドが実行されますが、Shift+Enterではコマンドを実行せずに改行できます。
たとえば、長いPowerShellコマンドを複数行に分けて入力するときに便利です。
Get-ChildItem |
Where-Object {
$_.Length -gt 1MB
}
ただし、これはPowerShellそのものの共通仕様ではありません。
VSCodeのShell Integrationが有効になっている環境で利用できる動作です。
Shift+Enterが動かない場合の対処法
Shift+Enterを押しても期待した動作にならない場合は、VSCodeの設定や拡張機能などを確認します。
Python拡張機能を確認する
PythonコードをShift+Enterで実行したい場合は、MicrosoftのPython拡張機能が有効になっているか確認します。
Extensions画面からPython拡張機能がインストール済みか、有効になっているか確認してください。
ファイルがPythonとして認識されているか確認する
Python用のShift+Enterを使用する場合、対象ファイルがPythonとして認識されている必要があります。
通常は、
sample.py
のように.py拡張子を使用します。
VSCode画面右下のLanguage Modeが、
Python
になっているかも確認するとよいでしょう。
Pythonインタープリターを確認する
Python拡張機能が正しく入っていても、実行するPython環境が選択されていないと正常に動作しない場合があります。
コマンドパレットから、
Python: Select Interpreter
を実行し、使用するPython環境を選択します。
venvやCondaなどを利用している場合は、目的の仮想環境が選ばれているか確認してください。
キーボードショートカットを確認する
Shift+Enterの割り当てが変更されている可能性もあります。
WindowsやLinuxでは、
Ctrl + K
Ctrl + S
Macでは、
Cmd + K
Cmd + S
でKeyboard Shortcuts画面を開けます。
検索欄に、
shift+enter
と入力すると、Shift+Enterに設定されているコマンドを確認できます。
拡張機能の競合を確認する
Code Runner、Jupyter、Vim系拡張機能などを利用している場合、Shift+Enterに別のコマンドが設定されている可能性があります。
VSCodeでは、同じショートカットでもコンテキストによって複数のコマンドを使い分けられます。
そのため、複数のShift+Enter設定が表示されていても、必ずしも問題があるとは限りません。
期待した動作にならない場合は、それぞれのキーバインドに設定されている条件を確認するとよいでしょう。
Shift+EnterとCtrl+Enterの違い
Shift+EnterとCtrl+Enterは似ていますが、VSCodeでは基本的に異なる操作です。
Shift+Enterはコンテキストによって動作が変わる
Pythonエディターでは、コードをPython REPLへ送信する操作として使われます。
検索欄では前の検索結果へ移動し、PowerShell統合ターミナルでは条件によって改行として機能します。
つまり、Shift+Enterはフォーカスしている場所によって意味が変わります。
Ctrl+Enterはエディターでは下に行を挿入する
通常のVSCodeエディターでは、WindowsやLinuxのCtrl+Enterには「Insert Line Below」が割り当てられています。
現在行の下に新しい行を追加するときに使用します。
そのため、
Shift + Enter
と、
Ctrl + Enter
は基本的に別のショートカットとして考える必要があります。
なお、Jupyter NotebookなどではCtrl+Enterがセル実行として使われることもあります。
ここでも、VSCodeでは現在のコンテキストによってショートカットの役割が変わる点に注意が必要です。
VSCodeのShift+Enterは用途によって使い分ける
VSCodeのShift+Enterは、1つの固定された機能を持つショートカットではありません。
Pythonエディターではコードの実行、Interactive Windowでは入力したコードの実行、検索欄では前の検索結果への移動、PowerShellでは条件によって改行として利用できます。
特にPython開発では、コード全体を毎回実行せず、必要な部分だけをShift+EnterでREPLへ送りながら確認できるため、試行錯誤しながらプログラムを書くときに便利です。
Shift+Enterが期待どおりに動かない場合は、現在フォーカスしている画面、使用している言語、インストール済みの拡張機能、キーボードショートカットの設定を順番に確認すると原因を見つけやすくなります。
以上、VSCodeでShift+Enterを使う方法についてでした。
最後までお読みいただき、ありがとうございました。









