我在这里看到了其他VS代码问题,所以我决定自己问一个问题,因为他们的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()
所以我的问题是:有没有办法让它真正按照预期的方式工作?
发布于 2021-07-23 14:48:04
VS Code仍然不能正确地支持在Python中复制多行代码。
您可以使用this之类的扩展来完成此操作。但是这个只添加了paste-indent
命令。
这就是为什么你必须设置键盘快捷键。为此,请执行以下操作:
[
{
"key": "ctrl+v",
"command": "extension.paste-indent",
"when": "editorTextFocus && editorLangId == 'python' && !editorReadonly"
}
]
(或者通过编辑"ctrl+v"
更改任意一个上的快捷键绑定。例如,如果您使用的是MacOS,则应将其更改为"cmd+v"
)
https://stackoverflow.com/questions/49869058
复制相似问题