- 简介
- 安装
- 初试
- 内置模板
- 动态模板变量
- 带参数的装饰器模板
- 保存和加载
- 定义类
- 定义方法
- defm
- defc
- defs
- 批量设置参数
- 一些模板
- TODO
- 参考文献
PyCharm 是 Python 的最强 IDE,熟练掌握动态代码模板 Live Template 让编程效率事半功倍
PyCharm 下载
- Professional:专业版,收费
- Community:社区版,免费
File → Settings → Editor → Live Templates → 选中Python → 点+号 → Live Template
Abbreviation:缩写,用于快速输入
如定义一个简单的列表推导式
效果
灵活切换快捷键:
- Enter 或 Tab:下一个光标
- Shift + Tab:上一个光标
- Esc:取消提示
1. 字典推导式 compd
2. 带 if 字典推导式 compdi
3. 生成器推导式 compg
4. 带 if 生成器推导式 compgi
5. 列表推导式 compl
6. 带 if 列表推导式 compli
7. 集合推导式 comps
8. 带 if 集合推导式 compsi
9. for…in…循环 iter
10. for…in enumerate…循环 itere
11. main
12. 获取属性 prop
13. 获取设置属性 props
14. 获取设置删除属性 propsd
15. 调用父类方法 super
由 Edit variables 里指定
| 参数 | 含义 | 例子 |
|---|---|---|
| $END$ | 光标所在位置 | main |
| $SELECTION$ | 选中区域 | |
| blockCommentEnd() | 返回当前上下文中块注释结束的字符 | |
| blockCommentStart() | 返回当前上下文中块注释开始的字符 | |
| camelCase( | 将字符串转换为驼峰形式 | |
| capitalize( | 字符串首字母大写 | |
| capitalizeAndUnderscore( | 字符串首字母大写并用下划线连接 | |
| clipboard() | 返回系统剪贴板内容 | |
| collectionElementName() | 移除_list和s结尾 | |
| commentEnd() | 返回当前上下文中注释结束的字符 | |
| commentStart() | 返回当前上下文中注释开始的字符 | |
| complete() | 在变量的位置调用代码完成 | |
| completeSmart() | 在变量的位置调用智能代码完成 | |
| concat( | 拼接字符串 | |
| date([format]) | 返回当前系统日期 | date(“Y-MM-d, E, H:m”) |
| dbColumns() | ||
| dbObjectName() | ||
| decapitalize( | 字符串首字母小写 | |
| defaultReturnValues | ||
| djangoBlock | ||
| djangoFilter | ||
| djangoTemplateTags | ||
| djangoVariable | ||
| enum( | ||
| escapeString( | 转义特殊字符 | |
| expectedType() | ||
| fileName() | 返回当前文件名 | |
| fileNameWithoutExtension() | 返回当前文件名(不带扩展名) | |
| filePath() | 返回当前文件绝对路径 | |
| fileRelativePath() | 返回当前文件相对路径 | |
| firstWord( | 返回字符串的第一个单词 | |
| groovyscript( | 执行Groovy脚本 | 见下文 |
例子:
Template text
print('$var$', $cam$)
Edit variables 中设置 cam 的 expression 为 camelCase(var)
def decorator(arg1, arg2):
def wrapper(func):
def deco(*args, **kwargs):
$END$
func(*args, **kwargs)
return deco
return wrapper
保存单个:右键 → Copy
动态代码模板文件存放在:%homepath%PyCharm目录templatesPython.xml
如本人的为:
C:UsersAdministratorAppDataRoamingJetBrainsPyCharm2020.3templatesPython.xml
Template text
class $ClassName$($Object$):
"""$Docstring$"""
def __init__(self, $Arg$):
$Super$
self.$Arg$ = $Arg$
$Code$
$END$
Edit variables
效果(Tab 或 回车换到下一个变量)
Define method
def $name$(self, $arg$):
"""$doc$"""
$END$
defc
Define classmethod
@classmethod
def $name$(cls, $arg$):
"""$doc$"""
$END$
defs
Define staticmethod
@staticmethod
def $name$($arg$):
"""$doc$"""
$END$
| Abbreviation | Description | Template text | 功能 |
|---|---|---|---|
| bs | Batch set variable | $var$ | 批量设置self参数 |
| dbs | Dot batch set variable | $a$$var$ | 批量设置.参数 |
Edit variables → var 的 expression
groovyscript("def result=''; _1.split(', ').each{i -> result+='self.'+i+' = '+i+System.lineSeparator()}; return result;", clipboard());
// groovyscript("def result=''; def params="${_1}".split(', '); for(String i: params) {result+='self.'+i+' = '+i+'\n';}; return result;", clipboard())
groovyscript("def result=''; _1.split(', ').eachWithIndex{i, index -> if(index==0){result+='.'+i+' = '+i+System.lineSeparator();} else{result+=_2+'.'+i+' = '+i+System.lineSeparator()}}; return result;", clipboard(), a);
效果(需要先复制)
| Abbreviation | Description | Template text | 功能 |
|---|---|---|---|
| lc | list comprehension | [i for i in $END$] | 列表推导式 |
| sc | Set comprehension | {i for i in $END$} | 集合推导式 |
| dc | Dict comprehension | {i: i for i in $END$} | 字典推导式 |
| dc1 | Dict comprehension1 | {k: v for k, v in $END$.items()} | 字典推导式1 |
| pdir | show documentation | import pdir print(pdir($END$)) | 快速显示文档 |
| #! | Specify the Python interpreter | #!/usr/bin/env python | 指定Python解释器 |
| u8 | Specify the Python coding | #-*- coding: utf-8 -*- | 指定Python编码 |
| todo | TODO | # TODO: $END$ | 待办 |
| fixme | FIXME | # FIXME: $END$ | 需要修复 |
| se | Set instance variable | self.$var$ = $var$ $END$ | 设置参数 |
| pr | Print formatted string | print(’{}’.format($args$)) | 打印格式化字符串 |
- Live templates | PyCharm
- Live template variables - Help | PyCharm
- TODO comments | PyCharm
- PycharmTemplateOdoo GitHub
- favorinfo/templates GitHub
- pycharm_live_templates_sqlalchemy GitHub
- PyCharm-Django GitHub
- how to use camelCase in IDEA live templates
- how to run some script to analyze selected text and insert result in editor?
- IDEA自定义类注释和方法注释(自定义groovyscript方法实现多行参数注释)
- Groovy_w3cschool



