1. 问题概述:
PyCharm tab代码补全会覆盖后面的内容。
比如:想在func()
前加一个obj.
,当输入ob
提示可以自动补全为obj
时,按tab
,后面的func
会被覆盖,变成obj()
。
2. 相关原因:
因为Jetbrains
系列和其他IDE
对tab
快捷键的定义不太一样,按tab
会补全代码并覆盖后面的内容,enter
则是补全代码不覆盖。
3. 解决办法:
Windows 和 Linux下,通过菜单 File | Settings | Keymap
或快捷键 Ctrl+Alt+S
打开设置窗口,如下图:
可以看到tab
快捷键为选择查询条目替换,enter
为选择查询条目
为何是“选择查询条目替换”而不是“补全代码替换”,不得而知,但修改这两个按键映射确实解决了问题:
- 在“选择查询条目替换”上单击右键,然后选择“删除
Tab
”
- 在“选择查询条目”上单击右键,然后选择“删除
Enter
”,然后再次在“选择查询条目”上单击右键,然后选择“添加键盘快捷键”
- 因为按某些键或组合键(例如
Enter
或 Esc
)将导致实际操作,例如关闭对话框。 所以要将Tab
用作快捷键,需要单击“键盘快捷键”对话框中的“使用特殊键设置快捷键”图标(加号
),然后选择Tab
。
设置完成之后,使用tab
代码补全就不再会覆盖后面的内容了。
参考文档:Keymap https://www.jetbrains.com/help/pycharm/settings-keymap.html