python代码怎么折叠

Python011

python代码怎么折叠,第1张

最近刚好写了一个python的折叠功能。 能简单。 是基于emacs自带的python mode。可以支持各种类型的block (如if, for等)。  

关键是: mypython-fold/unfold-block。 我把它绑到了F10. 可以自己改。 其他都只是些支持代码

(defface codepilot-folding-overlay 

   '((default (:inherit region :box (:line-width 1 :color "DarkSeaGreen1" :style released-button))) 

     (((class color)) (:background "DarkSeaGreen2" :foreground "black"))) 

   "*Font used by folding overlay." 

   :group 'codepilot) 

  

(defun cptree-ov-delete () 

   (interactive) 

   (dolist (o (overlays-at (point))) 

     (cptree-delete-overlay o 'cptree))) 

  

(defvar cptree--overlay-keymap nil "keymap for folding overlay") 

  

(unless cptree--overlay-keymap 

   (let ((map (make-sparse-keymap))) 

     (define-key map [mouse-1] 'cptree-ov-delete) 

     (define-key map "\r" 'cptree-ov-delete) 

     (setq cptree--overlay-keymap map))) 

  

(defun cptree-delete-overlay(o prop) 

   (when (eq (overlay-get o 'cptree-tag) prop) 

     (delete-overlay o) 

     t)) 

  

(defun cptree-hide-region (from to prop) 

   "Hides a region by making an invisible overlay over it and save the 

overlay on the hide-region-overlays \"ring\"" 

   (interactive) 

   (let ((new-overlay (make-overlay from to))) 

     (overlay-put new-overlay 'invisible nil) 

     (overlay-put new-overlay 'cptree-tag prop) 

     (overlay-put new-overlay 'face 'codepilot-folding-overlay) 

     (overlay-put new-overlay 'display 

                  (propertize 

                   (format "...<%d lines>..." 

                           (1- (count-lines (overlay-start new-overlay) 

                                            (overlay-end new-overlay)))))) 

     (overlay-put new-overlay 'priority (- 0 from)) 

     (overlay-put new-overlay 'keymap cptree--overlay-keymap) 

     (overlay-put new-overlay 'pointer 'hand))) 

  

(require 'python) 

  

(defun mypython-fold/unfold-block () 

   "fold the block" 

   (interactive) 

   (let (ret b e) 

     (dolist (o (overlays-at (if (python-open-block-statement-p) 

                                 (save-excursion 

                                   (python-end-of-statement) 

                                   (point) 

                                   ) 

                                 (point)))) 

       (when (cptree-delete-overlay o 'cptree) 

         (setq ret t))) 

     (unless ret 

       (save-excursion 

         (unless (python-open-block-statement-p) 

           (python-beginning-of-block)) 

         (python-end-of-statement) 

         (setq b (point)) 

         (python-end-of-block) 

         (setq e (1- (point))) 

         (cptree-hide-region b e 'cptree))))) 

  

(define-key python-mode-map [(f10)] 'mypython-fold/unfold-block)

点击Sublime的Preferences->Setting-Default菜单,打开它的配置文件。找到如下一行的配置:

"fold_buttons": true,值为true则是显示三角折叠按钮,反之则不显示。

当然了,不推荐直接改它的默认配置文件,可以在Setting-User里覆盖此变量值。

Sublime Text:

Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

2012年6月26日推出新版本的Sublime Text 2.0,与之前版本相比主要有较大的改善:支持 Retina 视网膜屏、快速跳到下一个、文本拖放、改善构建系统、CSS 自动完成和高亮设置等。

pycharm常用的快捷键总结

搜索

Ctrl + Shift + F7 用法高亮显示

Ctrl + Alt + F7 显示用法

编辑

Ctrl + Shift + V 从最近的缓冲区粘贴

Ctrl + D 复制选定的区域或行到后面或下一行

Ctrl + Y 删除当前行

Ctrl + Shift + J 添加智能线

Ctrl + Enter 智能线切割

Shift + Enter 下一行另起一行

Ctrl + O 重新方法

Ctrl + Alt + T 选中

Ctrl + Numpad+/- 展开折叠代码块

Ctrl + Numpad+ 全部展开

Ctrl + Numpad- 全部折叠

Ctrl + F4 关闭运行的选项卡

Ctrl + Space 基本的代码完成(类、方法、属性)

Ctrl + Alt + Space 快速导入任意类

Ctrl + Shift + Enter 语句完成

Ctrl + P 参数信息(在方法中调用参数)

Ctrl + Q 快速查看文档

Ctrl + / 行注释

Ctrl + Shift + / 块注释

Ctrl + W 选中增加的代码块

Tab / Shift + Tab 缩进、不缩进当前行

Ctrl+X/Shift+Delete 剪切当前行或选定的代码块到剪贴板

Ctrl+C/Ctrl+Insert 复制当前行或选定的代码块到剪贴板

Ctrl+V/Shift+Insert 从剪贴板粘贴

Ctrl + Alt + I 自动缩进

Ctrl + Shift + U 在选定的区域或代码块间切换

Ctrl + Delete 删除到字符结束

Ctrl + Backspace 删除到字符开始

Shift + F1 外部文档

Ctrl + 鼠标 简介

Ctrl + Shift + W 回到之前状态

Ctrl + Shift + ]/[ 选定代码块结束、开始

Alt + Enter 快速修正

Ctrl + Alt + L 代码格式化

Ctrl + Alt + O 自动导入

Ctrl + F1 显示错误描述或警告信息

Alt + Insert 自动生成代码

相关推荐:《Python教程》

运行调试

Alt + Shift + F10 运行模式配置

Shift + F10 运行

Shift + F9 调试

Alt + Shift + F9 调试模式配置

Ctrl + Shift + F10 运行编辑器配置

Ctrl + Alt + R 运行manage.py任务

查找替换

F3 下一个

Ctrl + Shift + F 全局查找

Shift + F3 前一个

Ctrl + R 替换

Ctrl + Shift + R 全局替换

重构

Ctrl + Alt + N 内联

Ctrl + Alt + M 提取方法

F5 复制

F6 剪切

Alt + Delete 安全删除

Shift + F6 方法或变量重命名

Ctrl + Alt + V 提取属性

Ctrl + Alt + F 提取字段

Ctrl + Alt + C 提取常量

Ctrl + Alt + P 提取参数

Ctrl + F6 更改签名

跳转

Ctrl #[0-9] + 跳转到标识的书签

Shift + F11显示书签

Shift + Esc 隐藏当前窗口,焦点到编辑窗口

Ctrl + Shift + F4 关闭主动运行的选项卡

Ctrl + G 查看当前行号、字符号

Ctrl + E 最近访问的文件

Ctrl+Alt+Left/Right 后退、前进

Ctrl + N 跳转到类

Ctrl + Shift + N 跳转到符号

Alt + Right/Left 跳转到下一个、前一个编辑的选项卡

F12 回到先前的工具窗口

Esc 从其他窗口回到编辑窗口

Ctrl+B / Ctrl+Click 跳转到声明

Ctrl + Alt + B 跳转到实现

Ctrl + Shift + I 查看快速定义

Ctrl + Shift + B 跳转到类型声明

Ctrl + U 跳转到父方法、父类

Alt + Up/Down 跳转到上一个、下一个方法

Ctrl + ]/[ 跳转到代码块结束、开始

Ctrl + F12 弹出文件结构

Ctrl + H 类型层次结构

Ctrl + Shift + H 方法层次结构

Ctrl + Alt + H 调用层次结构

F2 / Shift + F2 下一条、前一条高亮的错误

F4 / Ctrl + Enter 编辑资源、查看资源

Alt + Home 显示导航条F11书签开关

Ctrl + Shift +F11 书签助记开关

Ctrl+Shift+Backspace 导航到最近编辑区域

Alt + F1 查找当前文件或标识

调试

Alt + F9 运行游标

Alt + F8 验证表达式

F8 跳过

F7 进入

Ctrl + Alt + F8 快速验证表达式

F9 恢复程序

Ctrl + F8 断点开关

Ctrl + Shift + F8 查看断点

Shift + F8 退出

常用

Tab / Shift + Tab 缩进、不缩进当前行(可选中多行)

Ctrl+C/Ctrl+Insert 复制当前行或选定的代码块到剪贴板

Ctrl + D 复制选定的区域或行到后面或下一行

Ctrl + Y 删除当前行

Shift + Enter 下一行另起一行

Ctrl +J 插入模版

Ctrl + Shift +/- 展开/折叠全部代码块

Ctrl + Delete 删除到字符结束

Ctrl + Backspace 删除到字符开始

Ctrl + Shift + F7 将当前单词在整个文件中高亮

Alt + up/down 方法上移或下移动

Alt + Shift + up/down 当前行上移或下移动

Ctrl + B/鼠标左键 转到方法定义处

Ctrl + W 选中增加的代码块

Shift + F6 方法或变量重命名

Ctrl + E 最近访问的文件

Esc 从其他窗口回到编辑窗口

Ctrl + F1 显示错误描述或警告信息

Ctrl + / 行注释(可选中多行)