質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2287閲覧

pythonのコードでインデントショートカットが動作しない

devbgn

総合スコア22

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/13 10:45

編集2018/12/14 00:16

いつもお世話になっています。

visual studio 2015 でpythonの勉強をしています。
c#やvbではctrl+K,Ctrl+Dでコードの自動成型ができますが、
pyファイルで同じショートカットキーを押下しても
インデントが自動で実行されませんでした。
pythonはインデントが重要なので自動成型できないのは
なかなかつらいなと感じております。

いろいろエディタ周りの設定を変更して試してましたが
他のショートカットは動作するものの自動インデントだけが
できない状況です。

これはvisual studioの仕様なのでしょうか?
もしvisual stuido 2015でうまく自動インデントが
機能しているようでしたら設定のアドバイスを頂けないでしょうか?

よろしくお願い致します。

環境
visual studio 2015 pro
python 3.7.0

追記
私のイメージしていた動作です。

python

1#今の動作 2a=1 3if a>0: 4 print('true') 5 else: 6 print('false') 7 8#ショートカットの動作イメージ 9a=1 10if a>0: 11 print('true') 12else: 13 print('false')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2018/12/13 12:37

Pythonソースを自動整形する際、インデントを変更することは絶対にやってはいけないことですので、質問で「自動インデント」と言っているのはどういうことかなあ、と感じました。どういう状態がどういう状態になるのを望んでいるのか、実例を挙げるのがいいかと思います。あるいは、:の次の行が自動でインデントが一段深くなるということでしょうか。
hayataka2049

2018/12/13 15:23

c#やvbはインデントが構文の解釈に影響を及ぼさないから自動で整えられるだけで、pythonだと原理的に無理なのではという気がします
hayataka2049

2018/12/13 15:23

c#やvbはインデントが構文の解釈に影響を及ぼさないから自動で整えられるだけで、pythonだと原理的に無理なのではという気がします
devbgn

2018/12/14 00:18 編集

>quiquiさん ご回答ありがとうございます。 動作のイメージを記載しました。現状はコードに示したような挙動になるのでインデントを手動で修正していました。
devbgn

2018/12/14 00:24

>hayataka2049さん ご回答ありがとうございます。 インデントに意味をもつpythonだと開発者側で考えてインデントするのことが必要なので、 IDE側で自動インデント整形はできないとう認識で合っていますでしょうか。 言われてみるとなるほどと思いました。
devbgn

2018/12/14 00:37

>quiquiさん 本件、pythonの仕様ということで納得しました。 コメントありがとうございました。
guest

回答2

0

現実としては、Pythonのコード記述を支援するものの多くは

if a: foo() else:

まで入力すると(つまりelseの後続の:を入力すると)、その時にelse:のインデントを一段あげるという挙動をします。
それで合っているのかどうかはエディタ側にはわからないのですが最低限それだけはやります。そのあとに、書いている人の意図に合ってなければ、インデントを適切にしなければならないです。

else:まで入力した時にインデントを自動であげる設定が存在するか、という質問をするのがいいかと思います。

投稿2018/12/14 00:39

編集2018/12/14 00:41
quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

devbgn

2018/12/14 00:47

ご回答ありがとうございます。 確かにインデントが正しいかどうかは人間側にしかわからないですよね。 質問の意図としてはまさに仰る内容ですので、そのように質問をすればよかったと思います。 いずれにせよpythonのインデントについて理解が深まりました。 ありがとうございました。
guest

0

ベストアンサー

pythonの構文上、自動修正で一意に決定するのは無理ですね。

わかりやすい例。

python

1if 条件1: 2 ほげ 3 if 条件2: 4 ふが 5 else: # どっちのifだ? 6 ぴよ 7

スペース4つに統一するとか、コピペしてきたコードを一括で一段上げたり下げたりはできると思いますが。インデントに関しては原理的にその程度の支援しか得られません。人間がインデントしてください。

投稿2018/12/14 00:28

編集2018/12/14 00:30
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

devbgn

2018/12/14 00:47 編集

早速のご回答ありがとうございます。 自動インデントに慣れていたのでついついそれが当たり前のように思っていました。 単純な事例ですがpythonについて理解が少し深まりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問