VS Code Python粘贴和缩进

时间:2018-04-17 02:42:46

标签: python visual-studio-code

我在这里看到了其他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()

所以我的问题是:有没有办法让它按照预期的方式运作?

1 个答案:

答案 0 :(得分:0)

VS Code 仍然不能正确支持在 Python 中复制粘贴多行代码。

您可以使用 this 等扩展名来实现。 但是这个只添加了 paste-indent 命令。

这就是您必须设置键盘快捷键的原因。要做到这一点:

  1. 文件 -> 首选项 -> 键盘快捷键
  2. 这将打开 GUI。您可以在那里手动配置它,也可以按 Open Keyboard Shortcuts (JSON) 并添加以下行:
[
    {
        "key": "ctrl+v",
        "command": "extension.paste-indent",
        "when": "editorTextFocus && editorLangId == 'python' && !editorReadonly"
    }
]

(或通过编辑 "ctrl+v" 更改您喜欢的键绑定。例如,如果您使用的是 MacOS,则应将其更改为 "cmd+v"