1. 代码排版,自动PEP8
pep8 是Python 语言的一个代码编写规范。如若你是新手,目前只想快速掌握基础,而不想过多去注重代码的的编写风格(虽然这很重要),那你可以尝试一下这个工具 - autopep8
首先在全局环境中(不要在虚拟环境中安装),安装一下这个工具。

sudo pip install autopep8

然后在 Pycharm 里导入这个工具。

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


我随意写了一段不符合 pep8 规范的代码。
点击右键,选择 External Tools -> AutoPep8
看一下效果,还是挺明显的
你可能会说,Pycharm 本身就自带这个功能了呀,快捷键 Command+Option+L ,就可以实现一键pep8了。你可以对比一下,Pycharm 自带的代码 pep8 化功能 并没有像这个autopep8 来得彻底。我相信你最终的选择肯定是后者。
2. 误删文件,一秒找回
无意中发现了 Pycharm 的隐藏的一个功能 Local History,它会保存你对文件的所有操作记录。
就拿我的刚刚测试的文件来举例,我先是新建了一个文件,然后对在这个文件里添加了几行代码。最后我将这个文件删除了。
此时你可以在你的项目目录里,点击右键,有个 Local History 的选项,再点击子选项 Show History,你可以看到这里有个记录板。如果你想恢复删除的文件,就在删除的记录项点击右键,选择 Revert 即可恢复。
3. 拥抱Vim,远离鼠标
在大多数场景之下,使用鼠标的效率和精准度,是远不如键盘快捷键的(前提是你已经相当熟练的掌握了快捷键),这个你得承认吧。
Vi 可以满足你对文本操作的所有需求,比可视化界面更加效率,更加 geek。如果你和我一样,是忠实的 vim 粉。在安装完 Pycharm 完后,肯定会第一时间将 ideaVim 这个插件也装上,它可以让我们在 Pycharm 中 使用 vim 来编辑代码。
安装方法如下,安装完后需要重启 Pycharm 生效。
4. 代码模板,效率编码
Pycharm 提供的这个代码模板,可以说是相当实用的一个功能了。它可以在你新建一个文件时,按照你预设的模板给你生成一段内容,比如解释器路径,编码方法,作者详细信息等
按照上图模板,生成的效果如下。
除了新建文件时可以初始化文件,在开发编写代码时,也同样使用 Pycharm 中自带的实用的代码模板,提高你的编码效率。
当你在键盘中敲入 Command + J 时,就可以调出一个面板,从下图可以看出里面有许多预设的模板。

如果我们想选择最后一个 main ,可以继续键入 main,然后就可以直接生成如下这段平时都要手动敲入的代码。
这里再举个例子,for 循环 可以这样写。

5. 使用书签,快速定位
都我在看框架的源代码时,最常使用的是 Command + B (也就是 command + 鼠标左键 )一层一层地往里深入,但是当源代码比较多,可能一整个事件过程涉及十几文件,函数调用错综复杂,对于一个庞大的项目来说,有用的可能就几个关键函数,每次要找到这几个函数,都要重头从源函数再一层一层的找下去,这样实在太麻烦了,我常常因此把自己给看晕了。
直到后来我发现了 Pycharm 这个书签功能。
使用书签功能,我可以在在关键的位置打上书签,想看的时候,调用书签,快速定位即可。
使用它,你需要记住下面下几个快捷键

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 窗口,这里 可以运行命令表达式,直接操作变量。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190909233946934.png

7. 指定参数执行脚本
你在 Pycharm 运行你的项目,通常是怎么执行的?我的做法是,右键,然后点击 Run,或者使用快捷键 Shift + F10 。
有时候,在运行/调试脚本的时候,我们需要指定一些参数,这在命令行中,直接指定即可。
假设在命令行中,运行脚本的命令是这样

python main.py init --local

对于刚使用 Pycharm 的同学,可能并不知道 Pycharm 也是可以指定参数的。点击下图位置

进入设置面板,在 Script parameters 中填入参数即可。
同时在上图的底部,你可以看到,这里可以很方便的切换 解释器,比你跑到这边来要容易得多吧
8. 搜索时过滤测试文件
接下来,介绍一个,我看框架源码的时的一个小技巧,可能只适用一小部分人吧。
我平时会看的框架是 OpenStack ,我不知道其他框架是怎样的,但在 OpenStack 里面带有大量(真的很多)的单元测试文件。这给我在使用 Find in Path 时带来了不小的困扰,你可以从下图的搜索结果中感受一下,搜索一个函数,test 文件里的结果比 正常文件要多很多。
这些测试文件的搜索结果,对于我们看源代码不仅没有任何帮助的,更重要的是还干扰视线。于是我就研究了一下,从文件名入手,只要在 File mask 里填写 !test* 可以将这些test文件过滤掉。搜索结果一下子清晰很多。
9. 关闭烦人的灯泡提示
当我们在代码里面有语法错误,或者代码编写不符合 pep8 代码规范时,鼠标选择有问题的代码,就会自动弹出小灯泡,这个灯泡是有颜色之分的,如果是红灯泡,一般都是语法问题,如果不处理会影响代码运行。而如果是黄灯泡,就只是一个提示,提示你代码不规范等,并不会影响程序的运行。
虽然这个灯泡,是出于善意之举,但我认为它确实有点多余(可能是我个人没有使用它的习惯),要是语法错误会有红色波浪线提示。你可能会说灯泡不仅起到提示的作用,它还可以自动纠正代码,我个人感觉并没有人工校正来得效率,来得精准。
基于有时还会像知乎上这个朋友说的这样,会挡住我们的代码,会经常误点,这确实也是一个烦恼。
我研究了下,Pycharm (2018版本)里是有开关按钮的,将下图中的这个选项(Show intention bulb)取消勾选,就可以关闭这个功能。

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

Pycharm 本身会实时地对变量名进行检查,如果变量名不是一个已存在的英文单词,就会出现一条波浪线,当一个变量里有多个单词时,Python 推荐的写法是用下划线来分隔(其他语言可能会习惯使用驼峰式命名法 ,但 Python 是使用下划线),所以在 Pycharm 看来 my_name 是规范的,而 myname 会被当成是一个单词对待,由于它在单词库里并没有它,所以 myname 是不规范的。
每个人的变量命名习惯不一样,如何你在项目里大量使用了 myname 这种风格的变量命名方法,像下面这样(随便找了一段 cloudinit 的代码),是让人挺不舒服的,总有一种代码有 bug 的错觉

那么如何关闭这个非语法级别的波浪线呢?很简单,它的开关就在你的右下角那个像 人头像 一样的按钮

然后选择 Syntax 级别的即可。同样一段代码,效果如下,干净了很多。
11. 一键进行代码性能分析

在 Python 中有许多模块可以帮助你分析并找出你的项目中哪里出现了性能问题。

比如,常用的模块有 cProfile,在某些框架中,也内置了中间件帮助你进行性能分析,比如 Django ,WSGI。

做为Python 的第一 IDE, PyCharm 本身就支持了这项功能。而且使用非常方便,小白。

假设现在要分析如下这段代码的性能损耗情况,找出到底哪个函数耗时最多

import timedef fun1():time.sleep(1)def fun2():time.sleep(1)def fun3():time.sleep(2)def fun4():time.sleep(1)def fun5():time.sleep(1)fun4()fun1()
fun2()
fun3()
fun5()

点击 Run -> Profile ‘程序’ ,即可进行性能分析。

运行完毕后,会自动跳出一个性能统计界面。

性能统计界面由Name、Call Count、Time(ms)、Own Time(ms) ,4列组成一个表格,见下图。

1.表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。
2.点击表头上的小三角可以升序或降序排列表格。
3.在Name这一个列中双击某一行可以跳转到对应的代码。
4.以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的16.7%
点击 Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图。


左上角的4个按钮表示放大、缩小、真实大小、合适大小;
1.箭头表示调用关系,由调用者指向被调用者;
2.矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数;
3.矩形中间显示运行时间和时间百分比;
4.矩形的颜色表示运行时间或者时间百分比大小的趋势:红色 > 黄绿色 > 绿色,由图可以看出fun3的矩形为黄绿色,fun1为绿色,所有fun3运行时间比fun1长。
5.从图中可以看出Test.py直接调用了fun3、fun1、fun2和fun5函数;fun5函数直接调用了fun4函数;fun1、fun2、fun3、fun4和fun5都直接调用了print以及sleep函数;整个测试代码运行的总时间为6006ms,其中fun3的运行时间为1999ms,所占的时间百分比为33.3%,也就是 1999ms / 6006ms = 33.3%。
12. 使用Git做版本控制

按照如下提示点击 Git 仓库配置


接着输入仓库地址


点击 Test,测试连通性,会要求输入密码


若一切顺利,则会看到如下界面

测试连接成功后,点击 Clone 就可以克隆下来了。
对于以前使用 Git 命令来管理的,现在可以直接使用 PyCharm 的菜单栏来操作,这些功能已经可以满足大多数人的日常需求了,应该是够用了。


13. Tab轻松转空格
在团队协作中,你难免会动到别人编辑的文件,有的人喜欢做tab做缩进,有的人喜欢用四个空格做缩进。(个人推荐使用tab转四个空格)
但是在同一个Python文件模块里,tab 和 四个空格缩进两种风格是不能共存的。这就需要你按照该文件原来的缩进风格来进行编码,在 Pycharm 里,可以设置自动检测原文件的缩进风格来决定当你使用tab键缩进的时候,是TAB还是四个空格。
在图示位置打勾即可开启自动检测。

上面是对一个旧的 Python 模块进行修改时,如何决定当前编辑的缩进方式。
而对于新建模块,默认的缩进方式,是如何确定的?
如下图,若在 Use tab character 打上勾,则你新建一个 Python 后,就会使用 TAB 进行缩进,反之,则使用四个空格进行缩进。


14. 一次注册,永久激活

PyCharm 有分两个版本,一个是社区版(免费功能有限),一个是专业版(有一些增强功能),详细差异你可以参考这个图,一般来说,社区版用作学习用途是没有问题的。

如果需要使用专业版,网上也有一些注册服务器使用,非常方便,缺点是过一段时间,可能就会失效。这里有一种一劳永逸的方法,但可能仅对早期的 PyCharm 版本有效,可以实现永久激活(到 2099 / 2100年,一定意义上是永久了吧)。
经过我个人亲测,以下破解jar包,Windows 中在 2017.1.5 版本中有效,Mac OS 在2018.2.4 版本中有效。如果你在自己的版本中尝试无效,可以尝试切换至我的版本。
以下将分别以 Mac OS 和 Windows两个主流系统做演示。
第一步:
下载jar包:此jar包的目的就是让截获截止时间并骗过 PyCharm;
Windows:https://pan.baidu.com/s/1dwhT6ptvi3j45i4sSZLvVA 密码:lvyv
Mac OS:https://pan.baidu.com/s/1dwhT6ptvi3j45i4sSZLvVA,密码:5o4s
第二步:
若是 Windows 系统,请找到并进入你的 PyCharm 安装启动目录(以我的为例):E:\Program Files\JetBrains\PyCharm 2017.1.5\bin
将第一步下载的 jar 包放入这个目录,并打开如下两个以 vmoptions 后缀结尾的文件:

添加如下这一行(请根据你的实际安装目录自行调整)

若是 Mac OS 系统,请找到并进入你的 Pycharm 安装启动目录(以我的为例)
将第一步下载的 jar 包放入这个目录

并打开如下一个以 vmoptions 后缀结尾的文件:

第三步:

随意填写个激活码,如果此前已经有写过,这步可直接跳过到第四步,如果没有写过,你就填这个吧。

点击:Help -> Register -> Activation Code

BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiQUMiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9LHsiY29kZSI6IklJIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJSQyIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9LHsiY29kZSI6IlBTIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJEQiIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9XSwiaGFzaCI6IjQ3NzU1MTcvMCIsImdyYWNlUGVyaW9kRGF5cyI6MCwiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-iygsIMXTVeSyYkUxAqpHmymrgwN5InkOfeRhhPIPa88FO9FRuZosIBTY18tflChACznk3qferT7iMGKm7pumDTR4FbVVlK/3n1ER0eMKu2NcaXb7m10xT6kLW1Xb3LtuZEnuis5pYuEwT1zR7GskeNWdYZ0dAJpNDLFrqPyAPo5s1KLDHKpw+VfVd4uf7RMjOIzuJhAAYAG+amyivQt61I9aYiwpHQvUphvTwi0X0qL/oDJHAQbIv4Qwscyo4aYZJBKutYioZH9rgOP6Yw/sCltpoPWlJtDOcw/iEWYiCVG1pH9AWjCYXZ9AbbEBOWV71IQr5VWrsqFZ7cg7hLEJ3A==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9

第四步:

若是 Windows 系统,重启 PyCharm 后,查看激活信息:Help -> About

如果是 Mac OS 系统,重启 PyCharm 后,查看激活信息:PyCharm -> About PyCharm


另外,以上仅做交流和个人学习使用,请勿商用,有能力的朋友还是希望多支持正版!

15. 源码文档,快速预览

Ctrl + 鼠标左键 (Mac 上是:Command + 鼠标左键),可以实现函数跳转查看源码, 这几乎是每一个 PyCharmer 都会的一个惯用技巧。
这里再另外介绍两个类似的小技巧,快速 查看函数文档 和 预览源代码 。
在函数的开头处,使用三个引号 " 包含的内容,叫做函数文档 (DocString)。
在编写代码时,顺便写好函数的接口文档,是一个很好的编码习惯。它介绍了该函数的参数类型及说明,返回值类型及范例,写得好一点的还会写出 几个简单的 Example Usage 有助于理解使用。这边随便截一个 Werkzeug 的例子。

假如我们在使用这个类的时候,忘记了这个用法,可以按住 Ctrl + q(Mac 的快捷键暂未找到),在当前页面就可以快速预览 LocalStack 的接口文档。

同样的,如果你对这个类或者函数的代码逻辑感兴趣,也可以使用快速预览的方式在当前页面展示源代码。快捷键是:Ctrl + shift + i (Mac:Command + shift + i)。效果如下


如果 PyCharm 检测到的同名函数有多个,可以点这里进行切换选择查看


这两个快捷键比起使用 Ctrl + 鼠标左键 跳进源代码来说,更加方便,,就像微信小程序一样,用完即焚,不会新产生一个标签页,也不需要来回跳转页面。
16. 快速定位到错误行
前几天打开 PyCharm,发现在导航栏这里出现了很多红色波浪线,有过 PyCharm 使用经验的同学,这是代码出现了错误。


顺着波浪线,我一层一层地展开目录树,终于找到了那个包含错误的文件。由于是手误,我也不知道我改动了哪一行,看了下这个文件,有将近8000行的代码,难道一行一行地去找?
不,这绝对不是使用 IDE 正确的方式。
遇到问题,就应该尝试去寻找快捷方法,有没有办法,可以一下子定位到错误代码呢?
这时候,我想起了PyCharm 有提供给我们一个 Keymap 的面板,可以很方便的设置、查询快捷键。说不定我在那里可以找到我想要的答案
我在搜索框输入 Error,就找到了快速定位到错误位置的快捷键 F2 和 Shift+F2 可以快速的定位到错误行(Mac和Windows快捷键一样)。

使用快捷键 F2 查看了下原来是这里缩进有问题,导致语法出现错误。

17. 快速查看最近的修改

上面为了恢复因为手误造成的语法错误,我使用了快捷键来定位错误行,虽然解决了问题,但总有种绕了几个弯的感觉。
假如有种方法,可以项目查看最近的修改记录的话(没有git做版本控制的情况下),那就太好了。
太巧的是,今天我打开 PyCharm ,就给我推了这条 tip,(在Mac上)使用 option+shift+C 可以快速查看最近修改的内容(Windows 是Alt+Ahift+C)

18. 静态代码分析检查

对于编译型的语言,如 Java,需要将代码编译成机器可识别的语言才可运行,在编译过程中,就可以通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷。这个过程叫做静态代码分析检查。
那对于 Python 这种解释型的语言来说,代码是边运行边翻译的,不需要经过编译这个过程。很多肉眼无法一下子看出的错误,通常都是跑一下(反正跑一下这么方便)才能发现。
由于 Python 运行是如此的方便,以至于我们都不太需要关注静态分析工具。
但也不是说,静态分析工具完全没有用武之地,我认为还是有的。
如果你的编码能力还没有很成熟,代码中可以有许许多多的隐藏bug,由于 Python 是运行到的时候才解释,导致一次运行只能发现一个错误,要发现100个bug,要运行100次,数字有点夸大,其实就是想说,如果这么多的错误都能通过一次静态检查发现就立马修改,开发调试的效率就可以有所提升。当然啦,并不是说所有的错误静态分析都能提前发现,这点希望你不要误解。
做为 Python 最强 IDE,PyCharm本身内置了这个功能,不需要你安装任何插件。
你只需要像下面这样点击项目文件夹,然后右键,选择 Inspect Code,就可以开启静态检查。

我对开源组件 nova 的代码做了下静态检查发现,其不规范的地方高达数千处。

19. 全方位无死角精准定位

一直觉得使用鼠标是一种非常低效的习惯。
所以我热衷于使用各种键盘快捷键来提高操作的精准度,在编辑器上我可以相当熟练的使用 vim 指令完成我各种需求,因此我给 PyCharm 装上了ideaVim,给 Chrome 装上了 Vimium。
同样地阅读框架代码,我也都是使用全键盘进行操作。因为我有长期阅读 OpenStack 源码的需求,其代码量是数百万级别的。如果没有使用精准定位来快速跳转,这种极差的体验将很难使我坚持下来。
这里暂时先介绍几种我最常用的精准定位方法,主要可以定位跳转到如下五种:
精准定位到文件:Windows:Ctrl+Shift+N:,Mac:Command+ shift +N

精准定位到类:Windows:Ctrl+N,Mac:Command+N


精准定位到符号:类的所有成员(函数、变量等)都可以称之为符号,Windows:Ctrl+Alt+Shift+N,Mac:Option+Shift+Command+N:


精准定位到文件结构:文件结构包括类、函数、变量,这说明上面定位到类和定位到符号的方法,你都可以用这个来代替。
Windows:Ctrl+F12,Mac:Command+F12,如果和我一样是Mac是带touchbar的,键盘上是没有F12的,那你应该先按住 Command + fn,这时 touchbar 上会出现 F12,再按F12即可。

精准定位到某行:Windows:Ctrl+G,Mac:Command+G:,如下图定位到第510行第9个字符处。


20. 利用 TODO 解救“中年痴呆”

一个程序员,如果能够一天都只和代码打交道,是一件多么难得的事情。
可能外行人不知道,做为同样是程序员的你,是不是和我有一样的烦恼。
代码写着写着,测试突然就喊道:小明,你的代码有bug,ug,g(回声)。。
代码写着写着,运维突然一个弹窗:小明,这个线上问题赶紧排查一下。。
代码写着写着,产品突然就跳出来:小明,能做一个根据手机壳颜色自动改变app主题的app不??
这样的噩梦每天都在重复不间断地上演着,或许我知道了为什么程序员要在深夜里码代码了,因为那是白日里得不到的宁静。
所以 王建硕 在<<入静和入世>>一文中写道:
“当看到一个程序员冥思苦想的时候,不要过去打扰,甚至在极端的情况下,一句友好的问候都是多余的。”
为了避免这个情况,我通常在别人打断我的时候,请对方给我一分钟的时间,使用PyCharn 的 TODO 功能快速记录下当前的思绪状态,以及下一步要做的事情。
使用方法跟注释差不多,只要固定要以 TODO 开头。然后,你要查看全局项目中的所有 TODO 事项的时候,可以使用快捷键调出 TODO 面板。如果你是 Mac, 快捷键 是Command + 6,而 Windows 是 Alt+6。

另外,我还使用这个来记录下个版本要优化的代码逻辑,要添加的功能。
如果是比较紧急的 BUG,可以使用类似 TODO 的标记 — FIXME 来区分紧急程度。


21. 重构操作,一步到位
重构代码,免不了要对变量进行重命名。
如果一个一个改,显然不太智能,要知道我们是在用IDE,你也许会说,用搜索全部替换不就行了?还真不行。
比如下面这段代码,我只想改myfun 里的的test_name,而对于全局下的同名变量是不应该修改的。如果你全局替换,就会有误伤。

这时候,我们如何做呢?
可以使用 PyCharm 的 Refactor 功能,它会自动匹配作用域,既做到批量更改,也做到不误伤。
操作方法很简单,先选中你的变量,然后使用快捷键 Shift+F6,就可以直接重命名了。

(GIF动态只播放两次,重播请刷新页面)
22. 复杂操作,录制成宏
如果你在使用PyCharm 的时候,遇到有一些操作是比较复杂(步骤多),且使用频率特别高。
那可以考虑一下,使用其自带的宏录制工具。
它会将你的一连串操作,录制下来。等你想用的时候,直接调用就行了。
这边,我以录制一个 删除函数 的宏为例:先按上面的方法折叠函数,再按 Command+y (Windows:Ctrl+y)删除该行,就删除了该函数。
做录制方法如下:


(GIF动态只播放两次,重播请刷新页面)
录制好后,你可以先定位到你要删除的函数处,点菜单栏 Edit - Macro 然后选择我们刚刚录制的宏,就可以播放宏了。
这样播放宏显得有点繁琐,个人建议你为这个宏定义一个快捷键,这样会更方便播放宏。


设置快捷键时,注意不要和已有的快捷键冲突。
设置好后,查看 Macro,发现PyCharm已经将这个快捷键绑定给这个宏。


之后你就可以使用这个快捷键删除一个函数(其实这只是删除一个代码块,因为这里只是为了演示设置方法而随便想了个例子)。

23. 多行标签页,一览无余

PyCharm 打开一个文件,就占用一个标签面。
你有没有发现,不知不觉地,打开的文件越来越多,多到一行标签都装不下,装不下的标签页 PyCharm 会将其隐藏起来,并以数字的形式告诉你隐藏了几个文件。

点击数字5,你才可以查看隐藏了哪些文件。
这时你肯定会说,一行装不下 PyCharm 为什么不能多行显示呢?
答案是,不是不能,而是需要你设置。
如下图,将单行显示取消勾选即可。


设置完后,有哪些文件就非常清晰了。

24. 应用搜索,阅读源码必备

你平时若有阅读框架源码的需求或习惯,那你一定要来掌握这个技能。
在阅读源码时,代码的入口、流程、走向特别重要。
假设你现在知道了一个特别关键的类,你特别想知道是哪里调用了这个类,你想知道源头,知道整个调用流程。
这个时候你如果使用全局搜索,就会有很多的干扰信息。你急需有一种方法,可以快速给你列出有哪些地方调用了这个类。
贴心的 PyCharm 早已为你准备好了一切。
快捷键:Mac:Command+Option+F7 ,Windows:Ctrl+Alt+F7
如下图所示,按下快捷键后可以很轻松地看见调用列表。

25. 文件差异,轻松比对

程序开发必备神器中,beyond compare 绝对可以排一号。
虽说好用,但这东西,是收费的。
如果是简单的单个文件的比对,其实可以使用PyCharm里自带的。
点击源文件,再点击View -> Compare With … -> 选择目标文件
对比示例,可以查看下面这张图,UI做的还是挺好看的。

26. 以列为单位的块编辑

先给你出道小题,像下面这段代码,如果在不影响代码的情况下,快速删除后面代码后面的注释呢?


我能想到的有两种方法,如果像如上这种有规律的注释,可以使用 正则匹配 + 替换 来实现。


对于这个场景我想到了可以用 vim来轻松的解决,vim 支持块编辑,可以以列为单位选择区域然后进行操作,这在vim中是很常用的一个取消注释的操作。
同样回到 PyCharm 中来,你会发现它也支持块编辑。
当你按住 alt(windows)或者option(mac),然后使用鼠标进行选择,你会发现这样一件神奇的事情。

27. 智能补全,忽略大小写

智能搜索补全,是IDE的最吸引人的功能之一。
当你的对象是以大写字母开头时,而你使用小写字母编写代码时,是不能查找到该函数的,你必须得先切换成大写再输入一遍。


如何避免这种尴尬的情况?
只要在配置中关闭大小写匹配即可。

效果如下:

28. 保护眼睛,从PyCharm开始

记得刚毕业时,进入的第一家公司,有一个小姐姐,她把自己的电脑中对保护眼睛有用的配置都研究了一番。
其中就有程序的护眼色,什么word,excel,文件管理器,浏览器,能更改背景色的,全部设置个遍。
不能不说,合理的背景色,确实对保护眼睛有一定的作用,但个人觉得最重要的还是合理适时的休息。
这里就教大家如何设置 PyCharm 的背景色为护眼色,方法如下:

设置护眼色,会降低 PyCharm 的顔值,这需要你从中取一个取舍
关于提高 PyCharm 顔值的,你可以参考我之前写的这篇文章:
手把手教你打造一个顔值超高的IDE
29. 调试远程服务器的代码

一般情况下,我们开发调试都是在个人PC上完成,遇到问题,开一下 Pycharm 的调试器,很快就能找到问题所在。
可有些时候,项目代码的运行会对运行环境有依赖,必须在部署了相关依赖组件的服务器上才可以运行,这就直接导致了我们不能在本地进行调试。
对于这种特殊的场景,就我所知,有如下两种解决方案:
pdb
远程调试
关于 pdb,之前也写过专门的文章介绍使用方法,你可以点此查看:无图形界面的代码调试方法 - pdb
而远程调试呢,是让我们可以在我们在 PC 上用 Pycharm 的图形化界面来进行调试远方服务器上代码,它和本地调试没有太大的区别,原来怎么调试的现在还是怎么调试。
区别就在于,本地调试不需要事前配置,只要你的代码准备好了,随时可以开始 Debug ,而远程调试需要不少前置步骤。

高效 PyCharm 使用技巧相关推荐

  1. 受用一生的高效 PyCharm 使用技巧(六)

    http://www.sohu.com/a/329854019_654419 大家好,今天我又来给大家更新 PyCharm 的使用技巧. 从第一篇开始,一直到本篇,一共更新了6篇文章,每篇 5 个小技 ...

  2. 受用一生的高效 PyCharm 使用技巧(四)

    https://blog.csdn.net/pdcfighting/article/details/93269028 大家好,距离最近一篇 PyCharm 使用技巧的文章已经过去一月有余,最近虽然也比 ...

  3. 受用一生的高效 PyCharm 使用技巧(二)pycharm 指定参数运行文件

    https://mp.weixin.qq.com/s/Ii0-qHUXayTPb-K-17hmQQ 在介绍技巧之前,有些话想声明一下,这个系列的一些小技巧,对于一些重试用户来说可能是小 case,如果 ...

  4. 受用一生的高效PyCharm使用技巧(二)

    本文转载自公众号Python编程时光(ID: Python-Time) 今天又来给大家推荐一些我自己的用的小技巧,大家择需所取即可.如果你还没看过,可以下面的传送门,直接访达:受用一生的高效 PyCh ...

  5. 受用一生的高效 PyCharm 使用技巧(五)

    大家好,这个系列到今天已经是第五篇了,按照惯例,本次还是分享 5 个. 如果你还未看过前四篇,可以点此进行查看. 受用一生的高效PyCharm使用技巧受用一生的高效PyCharm使用技巧(二)受用一生 ...

  6. 受用一生的高效 PyCharm 使用技巧(二)

    本文来自Python编程时光 第 1 篇可以点击下方链接?跳转: 受用一生的高效PyCharm使用技巧 6. 神一样的调试技巧 假如我们在一个爬虫的项目中,会使用到 正则表达式 来匹配我们想要抓取的内 ...

  7. 高效pycharm使用技巧_您是否正在使用这种高效的采访技巧?

    高效pycharm使用技巧 Linux基金会前首席营销官阿曼达·麦克弗森 ( Amanda McPherson)的一篇有关她最好的面试技巧的帖子,让我想到了我多年前在GNOME董事会任教的面试技巧:关 ...

  8. 受用一生的高效 PyCharm 使用技巧 !

    大家好,今天我又来给大家更新 PyCharm 的使用技巧. 本系列一共更新了6篇文章,每篇 5 个小技巧,总计 30 个. 这30个使用技巧,全部是我自己在使用 PyCharm 中认为比较有用的,抽取 ...

  9. pycharm 最上面的快速定位标签_受用一生的高效 PyCharm 使用技巧(四)

    原标题:受用一生的高效 PyCharm 使用技巧(四) 大家好,距离最近一篇 PyCharm 使用技巧的文章已经过去一月有余,最近虽然也比较忙,但是一直没忘记录下一些我觉得值得分享的小tip.这个系列 ...

  10. 受用一生的高效PyCharm使用技巧(三)

    来源 | Python编程时光(ID:Python-Time) 大家好,这是本系列 PyCharm 的高效使用技巧的第三篇.按照惯例,本次还是分享 5 个. 从前两篇的阅读量.赞赏数和在看数来看,大家 ...

最新文章

  1. SalttSack自动化运维(四)——JINJA模块
  2. Android如何更新app的版本(中级)
  3. 对MIME格式的邮件文件进行解码获取其可读内容和附件等
  4. 把sqlserver中存储过程改写到oracle中
  5. 如何入门Web前端 你可以从这几方面入手
  6. 知乎推荐算法工程师面经
  7. Javascript语言精粹之Array常用方法分析
  8. java底层实现分页
  9. 关于SharePoint 2010里Servers in farm页面里status意义的澄清
  10. 用cin解决有时输入两个,有时输三个变量
  11. 蚂蚁森林用户须知_蚂蚁森林刷能量漏洞(轻松读懂规则)
  12. 语音和噪声相关数据集(持续更新)
  13. 车联网群雄逐鹿,通信业将如何掘金?
  14. linux wrf 系统_linux wrf 系统
  15. VGPNet:基于灭点的道路和路面标志的检测与识别
  16. 设计师必备!免费下载 PSD 素材的32个网站
  17. 苹果笔记本开机问号白色问号?
  18. unix/linux 经典书籍推荐
  19. java qq开发_Ubuntu用户的福音:基于Java开发的开源QQ客户端iQQ
  20. 数学在计算机图形学中的应用

热门文章

  1. 变换矩阵_平移 缩放 旋转及统一变换
  2. Linux入门篇-文件管理
  3. python正负数排序_带有负值的Python sort()问题
  4. 宝塔安装Jdk1.8
  5. 后缀是lnk是什么文件_后缀lnk是什么文件格式(lnk文件怎么恢复word)
  6. AWS KVS(Kinesis Video Streams)之WebRTC集成过程(六)
  7. 翻看完张一鸣近10年的所有微博,感觉挺可怕的。
  8. 先进先出物料架_仓库物料的先进先出FIFO管理(如何做到先进先出)
  9. 量子计算Shor算法
  10. 【Java-----字符串数组,访问字符串中字符与字符串长度】