如何添加"新线" Spyder中的键盘快捷键

时间:2015-01-28 00:22:56

标签: python spyder

使用其他编辑器时,大多数编辑器都有关于" new line"的功能。 例如,Sublime Text,使用

  

Ctrl +输入

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

  

因此我想添加关于"新线"的新功能。与

     

Ctrl +输入

     

要输入新行而不需要光标移动到尾部

你有什么想法可以与我分享吗?谢谢。

3 个答案:

答案 0 :(得分:2)

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

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

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

您会看到第一个条件之一负责输入/返回按键:第2139行,if key in (Qt.Key_Enter, Qt.Key_Return):

选项ctrl+Enter已经被采用了...所以如果不对选项造成太多影响,我只想在这里添加ctrl+shift+Enter的选项,可以免费使用。这个可以吗?

所以你要做的是在选项if not shift and not ctrl:之后添加,按下shift和control的另一个选项;即在我的情况下,我会在第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组合,您应该根据需要在您所在的行下方获得一个新行。

如果你不介意重新绑定或删除" Run cell"您自己的Spyder副本中的功能,您甚至可以在elif ctrl:条件下使用此代码,然后您就像在Sublime中一样拥有ctrl + enter绑定文本。

答案 1 :(得分:0)

如果你想继续写新行(将光标移到那里)而不是只添加一行并将光标保持在原位,只需忽略接受答案中的相关行:

elif shift and ctrl: # Insert newline functionality
    cursor = self.textCursor() 
    # startpos = cursor.position() # optional
    self.stdkey_end(False, False) # Go to the end of the line
    self.insert_text(self.get_line_separenter code hereator()) # Add a newline
    # cursor.setPosition(startpos) # optional
    # self.setTextCursor(cursor) # optional

我将对此做一个拉取请求,因为我猜其他许多人也可以从这个键绑定中获利。谢谢你的回答。

答案 2 :(得分:0)

一种帮助您的简单方法: 使用右移键作为End + Enter

首先:sudo apt-get install xdotool

在设置中,打开键盘并添加自定义快捷方式

名称:换行

命令:xdotool键结束KP_Enter

然后单击“禁用”并键入R_shift键

现在您可以使用右移来实现您想要的!