如何在Spyder中添加新行和键盘快捷键

2022-04-05 00:00:00 python spyder

问题描述

在使用其他编辑器时,大多数都有关于";换行符&的功能。 例如,Sublime文本,使用

Ctrl+Enter

无论光标是否在行尾,都可以直接输入新行。 检查完有关Spyder的所有设置后,对此一无所知。

因此,我想用

添加有关";新行";的新功能

Ctrl+Enter

要在没有光标的情况下输入新行,需要移动到尾部

你有什么想法和我分享吗?谢谢。


解决方案

我只是一个Spyder用户,但是您可以自己添加这样的功能。为此,您需要修改文件codeeditor.py,该文件在Windows中位于spyderlibwidgetssourcecodecodeeditor.py下。

警告:在修改codeeditor.py文件之前对其进行备份。

您需要做的是修改从第2129行(在My Spyder 2.3.1中)开始的keyPressEvent函数。

您将看到第一个条件之一负责按Enter/Return键:第2139行,if key in (Qt.Key_Enter, Qt.Key_Return):

选项ctrl+Enter已被采用...因此,在不过多地修改选项的情况下,我将在这里为ctrl+shift+Enter添加一个选项,该选项是免费使用的。这样可以吗?

因此,您要做的是在选项if not shift and not ctrl:之后添加另一个按下Shift和Ctrl的选项;即,在我的示例中,我将在第2153行添加此选项,缩进以匹配if not shift and not ctrl:行:

elif shift and ctrl: # Insert newline functionality
    cursor = self.textCursor() 
    startpos = cursor.position() # Remember where the cursor is
    self.stdkey_end(False, False) # Go to the end of the line
    self.insert_text(self.get_line_separator()) # Add a newline
    cursor.setPosition(startpos) # Go back to the initial position
    self.setTextCursor(cursor)
现在关闭Spyder,然后重新打开它。在编辑器中尝试ctrl+shift+enter组合,您应该会如您所愿,在所在行的正下方得到一个新行。

如果您不介意重新绑定或删除您自己的Spyder副本中的"Run cell"功能,您甚至可以玩玩并将此代码置于elif ctrl:条件下,然后您将拥有与Sublime Text中一样的ctrl+enter绑定。

相关文章