首页 > 技术文章 > Pycharm 使用技巧

juno3550 2021-08-16 15:42 原文

0. 常用快捷键

1. 代码排版,自动 PEP8

2. 找回误删文件

3. 使用 Vim 代替鼠标

4. 代码模板

5. 使用书签,快速定位

6. 调试技巧

7. 指定参数执行脚本

8. 关闭灯泡提示

9. 关闭波浪线提示

10. 展示多个文件窗口 

11. 高级查找时过滤测试文件

 

 

0. 常用快捷键

编辑类

Ctrl + D:向下复制选定的区域或行

Ctrl + Y:删除选定行

Ctrl + Alt + O:优化导入(去掉用不到的包导入)

Ctrl + 鼠标:简介/进入代码定义    

Ctrl + /:行注释 、取消注释

Ctrl + 左方括号:快速跳到代码开头

Ctrl + 右方括号:快速跳到代码末尾

Shfit + Enter:任意位置换行(快速在当前行下创建一个空行)

Ctrl + Shift + 向上/下箭头:移动选定的代码行/块

查找/替换类

Ctrl + F:当前文件查找

Ctrl + R:当前文件替换

Ctrl + Shift + F:全局查找

Ctrl + Shift + R:全局替换 

Ctrl + E:可打开最近访问过的文件

Ctrl + Shift + E:打开最近编辑过的文件

Double Shift:连续按两下 Shitf 键是万能搜索功能,可以搜索文件名、类名、方法名和目录名(搜索目录的技巧是在在关键字前面加斜杠“/”,表示过滤代码中的匹配关键字)

运行/调试代码

Mac:

  • Control + r:直接运行当前代码
  • Control + d:以 Debug(调试)模式运行代码

Windows/Linux:

  • Shift + F10:直接运行当前代码
  • Shift + F9:以 Debug(调试)模式运行代码

展开/收缩代码

当项目写到一定规模的时候,难免方法/函数会很多,这个时候我们可以使用 Command + Shift + -(或 +) 来收缩(或展开)代码,这个主要是为了方便查看。

 

1. 代码排版,自动 PEP8

pep8 是Python 语言的一个代码编写规范。

  • 如若你是新手,目前只想快速掌握基础,而不想过多去注重代码的的编写风格(虽然这很重要)。
  • 还是要严格遵守 pep8 规范的,不然代码传到 github 或者知乎上被人怼就不好了。但是靠肉眼去检查和注意的话太累。

1.1 Pycharm 自带的 pep8 功能

使用以下快捷键,一键 pep8 走起:

Mac:Command + Option + L

Windows:Ctrl + Alt + L

1.2 插件工具:autopep8

你可能会说,Pycharm 本身就自带实现一键 pep8 了。但也可以对比一下,Pycharm 自带的代码 pep8 化功能 并没有像这个 autopep8 来得彻底。

1)首先安装一下这个工具:

pip install autopep8

2)然后在 Pycharm 里导入这个工具,配置信息如下:

Name: AutoPep8
Description: autopep8 your code
Program: autopep8
Arguments: --in-place --aggressive --aggressive $FilePath$
Working directory: $ProjectFileDir$
Output filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

3)在代码中点击右键,选择 External Tools -> AutoPep8,完成 pep8 效果。

 

2. 找回误删文件

在 Pycharm 里的发起删除操作,很可能不会往回收站里丢。但 Pycharm 有一个功能 Local History,它会保存你对文件的所有操作记录。

此时你可以在你的项目目录里,点击右键,有个 Local History 的选项,再点击子选项 Show History,你可以看到这里有个记录板。如果你想恢复已被删除的文件,就在删除的记录项点击右键,选择 Revert 即可恢复。

 

3. 使用 Vim 代替鼠标

在大多数场景之下,使用鼠标的效率和精准度,是远不如键盘快捷键的(前提是你已经相当熟练的掌握了快捷键)。

Vi 可以满足你对文本操作的所有需求,比可视化界面更加效率,更加 geek。在安装完 Pycharm 后,可以将 ideaVim 这个插件也装上,它可以让我们在 Pycharm 中 使用 vim 来编辑代码。

安装方法如下,安装完后需要重启 Pycharm 生效。

 

4. 代码模板

Pycharm 提供的这个代码模板,可以说是相当实用的一个功能了。它可以在你新建一个文件时,按照你预设的模板给你生成一段内容,比如解释器路径,编码方法,作者详细信息等。

按照上图模板,生成的效果如下:

除了新建文件时可以初始化文件,在开发编写代码时,也同样使用 Pycharm 中自带的实用的代码模板,提高你的编码效率。

当你在键盘中敲入 Command + J 时,就可以调出一个面板,从下图可以看出里面有许多预设的模板。

如果我们想选择最后一个 main ,可以继续键入 main,然后就可以直接生成如下这段平时都要手动敲入的代码:

再举个例子,for 循环可以这样写:

  

5. 使用书签,快速定位

在我们看框架的源代码时,最常使用的是 Command + B (也就是 command + 鼠标左键)一层一层地往里深入。但是当源代码比较多,可能一整个事件过程涉及十几文件,函数调用错综复杂,对于一个庞大的项目来说,有用的可能就几个关键函数,每次要找到这几个函数,都要重头从源函数再一层一层的找下去,这样实在太麻烦了,常常因此把自己给看晕了。

而如果使用书签功能,就可以在关键的位置打上书签,想看的时候,调用书签,快速定位即可。

使用它,你需要记住下面下几个快捷键:

Command + F11   打上书签
Shift + F11     展示所有书签
F11             删除书签(经测试仅能在Windows上有效)

在你要打书签的位置,按下 Command + F11,你可以给这个位置加个序号,可以是数字也可以是字母,假如在下面这个位置 加了 1 这个序号,下次你就可以使用 Control + 1 直接跳转到这个位置。

当然你也可以不加,不加的话就是匿名书签了。你可以使用 Shift + F11 展示所有的书签,再进行跳转。 

 

6. 调试技巧

假如我们在一个爬虫的项目中,会使用到 正则表达式 来匹配我们想要抓取的内容。正则这种东西,有几个人能够一步到位的呢,通常都需要经过很多次的调试才能按预期匹配。在我们改了一次正则后,运行了下,需要重新向网站抓取请求,才能发现没有匹配上,然后又改了一版,再次运行同样需要发起请求,结果还是发现还是没有匹配上,往往复复,正则不好的同学可能要进行几十次的尝试。

(上面这个例子可能不太贴切,毕竟是有很多种方法实现不用重新发请求,只是列举了一种很笨拙且低效的调试过程,你看看就好了。)

而我们在这几十次的调试中,向同一网站发起请求都是没有意义的重复工作。如果在 Pycharm 中可以像  IPython Shell  和 Jupyter Notebook 那样,可以记住运行后所有的变量信息,可以在不需要重新运行项目或脚本,只需稍微调整下我们的代码,直接就可以进行正则调试。

答案当然是有。

假如我在调试如下几行简单的代码。在第 3 行处打了个断点。然后点击图示位置 Show Python Prompt 按钮。

就进入了 Python Shell 的界面,这个Shell 环境和我们当前运行的程序环境是打通的,使用的是同一个 namespace,这下你可以轻松地进行调试了。 

上面我们打了个断点,是为了方便说明这个效果。并不是说一定要打断点。如果不打断点,在脚本执行完成后,也仍然可以在这个界面查看并操作所有变量。

现在我们已经可以满足我们的调试的需求,但是每次运行脚本,都要手动点击 Show Python Prompt ,有点麻烦。嗯?其实这个有地方可以设置默认打开的。你需要点击图示位置 Edit Configurations 处:

然后在这里打勾选中:

设置上之后,在每次运行脚本后,都会默认为你存储所有变量的值,并为你打开 console 命令行调试界面。

除了上面这种方法,其实还有一种方法可以在调试过程中,执行命令表达式,而这种大家可能比较熟悉了,这边也提一下,就当是汇总一下。但是从功能上来说,是没有上面这种方法来得方便易用的。因为这种方法,必须要求你使用 debug 模式运行项目,并打断点。

使用方法就是,在你打了断点后,在图示位置处,点击右键使用 Evaluate Expression: 

就弹出了一个 Evaluate Expression 窗口,这里 可以运行命令表达式,直接操作变量。 

 

7. 指定参数执行脚本 

有时候,在运行/调试脚本的时候,我们需要指定一些参数,这在命令行中,直接指定即可。

假设在命令行中,运行脚本的命令是这样:

python main.py init --local

而 Pycharm 也是可以指定参数的。点击下图位置:

进入设置面板,在 Script parameters 中填入参数即可。 

 

8. 关闭灯泡提示 

先来说下这个灯泡提示是什么,有什么用?

当我们在代码里面有语法错误,或者代码编写不符合 pep8 代码规范时,鼠标选择有问题的代码,就会自动弹出小灯泡。这个灯泡是有颜色之分的,如果是红灯泡,一般都是语法问题,如果不处理会影响代码运行;而如果是黄灯泡,就只是一个提示,提示你代码不规范等,并不会影响程序的运行。

虽然这个灯泡,是出于善意之举,但我认为它确实有点多余(可能是我个人没有使用它的习惯),要是语法错误会有红色波浪线提示。你可能会说灯泡不仅起到提示的作用,它还可以自动纠正代码,我个人感觉并没有人工校正来得效率,来得精准。

基于有时还会像知乎上这个朋友说的这样,会挡住我们的代码,会经常误点,这确实也是一个烦恼。

Pycharm (以 2018 版为例)里是有开关按钮的,将下图中的这个选项(Show intention bulb)取消勾选,就可以关闭这个功能。

 

9. 关闭波浪线提示

下面先给出了一小段代码示例,思考一下,为什么 name,my_name 不会有波浪线,而 myname 和 wangbm 会有波浪线呢?

Pycharm 本身会实时地对变量名进行检查,如果变量名不是一个已存在的英文单词,就会出现一条波浪线,当一个变量里有多个单词时,Python 推荐的写法是用下划线来分隔(其他语言可能会习惯使用驼峰式命名法 ,但 Python 是使用下划线),所以在 Pycharm 看来  my_name 是规范的,而 myname 会被当成是一个单词对待,由于它在单词库里并没有它,所以 myname 是不规范的。

每个人的变量命名习惯不一样,如何你在项目里大量使用了 myname 这种风格的变量命名方法,像下面这样(随便找了一段 cloudinit 的代码),是让人挺不舒服的,总有一种代码有 bug 的错觉。

那么如何关闭这个非语法级别的波浪线呢?很简单,它的开关就在你的右下角那个像“人头”一样的按钮,然后选择 Syntax 级别的即可。

同样一段代码,效果如下,干净了很多。 

 

10. 展示多个文件窗口 

当你的公司不愿意为你配置 2 个显示屏时,你依然可以使用 PyCharm 在一个屏幕里查看多个文件。

鼠标放到当前导航处的文件名,然后右键 Split Vertically 或者 Split Horizontally 就可以啦。

 

11. 高级查找时过滤测试文件

以 OpenStack 框架为例,在 OpenStack 里面带有大量(真的很多)的单元测试文件。这给在使用 Find in Path(Ctrl + Shift + F)时带来了不小的困扰,你可以从下图的搜索结果中感受一下,搜索一个函数,test 文件里的结果比 正常文件要多很多。

这些测试文件的搜索结果,对于我们看源代码不仅没有任何帮助的,更重要的是还干扰视线。于是我就研究了一下,从文件名入手,只要在 Filemask 里填写 !test* 可以将这些 test 文件过滤掉。搜索结果一下子清晰很多。 

 

推荐阅读