首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VS Code Python粘贴和缩进

VS Code Python粘贴和缩进
EN

Stack Overflow用户
提问于 2018-04-17 10:42:46
回答 1查看 425关注 0票数 0

我在这里看到了其他VS代码问题,所以我决定自己问一个问题,因为他们的GitHub问题不是那么频繁地被访问。所以基本上我在VS Code中复制和粘贴python代码有一个问题。我使用autopep8作为格式化程序(但也尝试了yapf,所以我猜这不是格式化程序的问题)。让我来说明一下这个问题:

我有这样的代码:

代码语言:javascript
运行
复制
def show_events():
    a = 0
    if a == 0:

我想将这段代码粘贴到if

代码语言:javascript
运行
复制
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,我想看到这个:

代码语言:javascript
运行
复制
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()

但我看到的却是:

代码语言:javascript
运行
复制
 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,它也只是取消缩进第一行:

代码语言:javascript
运行
复制
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上。复制的结果如下:

代码语言:javascript
运行
复制
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()

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

EN

回答 1

Stack Overflow用户

发布于 2021-07-23 14:48:04

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

您可以使用this之类的扩展来完成此操作。但是这个只添加了paste-indent命令。

这就是为什么你必须设置键盘快捷键。为此,请执行以下操作:

  1. 文件->首选项->键盘快捷键
  2. 这将打开图形用户界面。在那里,您可以手动配置它,也可以按下打开键盘快捷键(JSON)并添加以下行:

代码语言:javascript
运行
复制
[
    {
        "key": "ctrl+v",
        "command": "extension.paste-indent",
        "when": "editorTextFocus && editorLangId == 'python' && !editorReadonly"
    }
]

(或者通过编辑"ctrl+v"更改任意一个上的快捷键绑定。例如,如果您使用的是MacOS,则应将其更改为"cmd+v" )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49869058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档