我在这里看到了其他VS Code问题,所以我决定自己问一个问题,因为他们的GitHub问题并不常见。所以基本上我在VS Code中复制和粘贴python代码有一个问题。我已经autopep8
作为格式化程序(但也试过了yapf
,所以我猜它不是格式化程序问题)。让我来说明这个问题:
我有这段代码:
def show_events():
a = 0
if a == 0:
我想将此代码块粘贴到if
:
conn = sqlite3.connect('Calendar.db')
c = conn.cursor()
data = c.execute('SELECT * FROM RepetitiveEvent')
for row in data:
print(row)
conn.close()
所以我转到下一行(就像第一个代码示例中的4一样),它为我自动缩进。现在我按Ctrl+V
,我想看到这个:
def show_events():
a = 0
if a == 0:
conn = sqlite3.connect('Calendar.db')
c = conn.cursor()
data = c.execute('SELECT * FROM RepetitiveEvent')
for row in data:
print(row)
conn.close()
但相反,我看到了这一点:
def show_events():
a = 0
if a == 0:
conn = sqlite3.connect('Calendar.db')
c = conn.cursor()
data = c.execute('SELECT * FROM RepetitiveEvent')
for row in data:
print(row)
conn.close()
按Ctrl+S
进行保存和格式化后(即使我将editor.formatOnPaste
设置为true
,它只是取消了第一行:
def show_events():
a = 0
if a == 0:
conn = sqlite3.connect('Calendar.db')
c = conn.cursor()
data = c.execute('SELECT * FROM RepetitiveEvent')
for row in data:
print(row)
conn.close()
谷歌搜索了一段时间后,我发现了扩展,人们会建议使用Python Paste and Indent
。我已经安装了它,我将Ctrl+Shift+V
绑定到pyPasteIndent.pasteAndIndent
。复制的结果如下:
def show_events():
a = 0
if a == 0:
conn = sqlite3.connect('Calendar.db')
c = conn.cursor()
data = c.execute('SELECT * FROM RepetitiveEvent')
for row in data:
print(row)
conn.close()
所以我的问题是:有没有办法让它按照预期的方式运作?
答案 0 :(得分:0)
VS Code 仍然不能正确支持在 Python 中复制粘贴多行代码。
您可以使用 this 等扩展名来实现。
但是这个只添加了 paste-indent
命令。
这就是您必须设置键盘快捷键的原因。要做到这一点:
[
{
"key": "ctrl+v",
"command": "extension.paste-indent",
"when": "editorTextFocus && editorLangId == 'python' && !editorReadonly"
}
]
(或通过编辑 "ctrl+v"
更改您喜欢的键绑定。例如,如果您使用的是 MacOS,则应将其更改为 "cmd+v"
)