2018-01-27 01:07:02 +08:00
|
|
|
|
---
|
2018-06-23 14:37:41 +08:00
|
|
|
|
title: "SpaceVim lang#python 模块"
|
2019-02-03 20:51:01 +08:00
|
|
|
|
description: "这一模块为 Python 开发提供支持,包括代码补全、语法检查、代码格式化等特性。"
|
2019-10-04 14:13:51 +08:00
|
|
|
|
lang: zh
|
2018-01-27 01:07:02 +08:00
|
|
|
|
---
|
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
# [可用模块](../../) >> lang#python
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
|
|
|
|
<!-- vim-markdown-toc GFM -->
|
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
- [模块简介](#模块简介)
|
|
|
|
|
- [功能特性](#功能特性)
|
|
|
|
|
- [依赖安装及启用模块](#依赖安装及启用模块)
|
|
|
|
|
- [启用模块](#启用模块)
|
2019-06-02 16:43:38 +08:00
|
|
|
|
- [语言工具](#语言工具)
|
2019-09-06 00:34:36 +08:00
|
|
|
|
- [模块设置](#模块设置)
|
2018-06-23 14:37:41 +08:00
|
|
|
|
- [快捷键](#快捷键)
|
|
|
|
|
- [跳至定义处](#跳至定义处)
|
|
|
|
|
- [代码生成](#代码生成)
|
2019-06-02 16:43:38 +08:00
|
|
|
|
- [测试覆盖](#测试覆盖)
|
2018-06-23 14:37:41 +08:00
|
|
|
|
- [交互式编程](#交互式编程)
|
|
|
|
|
- [运行当前脚本](#运行当前脚本)
|
2019-01-05 19:14:00 +08:00
|
|
|
|
- [整理 imports](#整理-imports)
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
|
|
|
|
<!-- vim-markdown-toc -->
|
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
## 模块简介
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-02-03 20:51:01 +08:00
|
|
|
|
这一模块为在 SpaceVim 中进行 Python 开发提供了支持,包括代码补全、语法检查、代码格式化、交互式编程以及调试等特性。
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
## 功能特性
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
- 代码补全
|
|
|
|
|
- 文档查阅
|
|
|
|
|
- 语法检查
|
|
|
|
|
- 代码格式化
|
|
|
|
|
- 交互式编程
|
|
|
|
|
- 代码调试
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
## 依赖安装及启用模块
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
### 启用模块
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
可通过在配置文件内加入如下配置来启用该模块:
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
```toml
|
|
|
|
|
[[layers]]
|
|
|
|
|
name = "lang#python"
|
|
|
|
|
```
|
|
|
|
|
|
2019-06-02 16:43:38 +08:00
|
|
|
|
### 语言工具
|
|
|
|
|
|
|
|
|
|
**语法检查:**
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
`checkers` 模块提供了代码检查功能, 此外需要安装 `flake8` 包:
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pip install --user flake8
|
|
|
|
|
```
|
|
|
|
|
|
2019-06-02 16:43:38 +08:00
|
|
|
|
**代码格式化:**
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-09-25 18:37:22 +08:00
|
|
|
|
默认的代码格式化快捷键为 `SPC b f`, 需要安装 `yapf`。
|
|
|
|
|
若需要在保存文件时自动格式化该 Python 文件,需要设置 `format_on_save` 为 `true`。
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
[[layers]]
|
|
|
|
|
name = "lang#python"
|
|
|
|
|
format_on_save = 1
|
|
|
|
|
```
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pip install --user yapf
|
|
|
|
|
```
|
|
|
|
|
|
2019-06-02 16:43:38 +08:00
|
|
|
|
**格式化导包:**
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
若需要更便捷地删除未使用的 imports,需要安装 [autoflake](https://github.com/myint/autoflake):
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pip install --user autoflake
|
|
|
|
|
```
|
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
通过安装 [isort](https://github.com/timothycrosley/isort) 可快速对 imports 进行排序:
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pip install --user isort
|
|
|
|
|
```
|
|
|
|
|
|
2019-06-02 16:43:38 +08:00
|
|
|
|
**测试覆盖:**
|
|
|
|
|
|
|
|
|
|
通过安装 coverage 可对代码测试覆盖情况进行统计:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pip install --user coverage
|
|
|
|
|
```
|
|
|
|
|
|
2019-09-06 00:34:36 +08:00
|
|
|
|
## 模块设置
|
2019-06-02 16:43:38 +08:00
|
|
|
|
|
2019-09-06 00:34:36 +08:00
|
|
|
|
默认情况下,当新建一个空白 python 文件时,会自动添加文件头,如果需要修改默认的文件头样式,
|
2019-09-25 18:37:22 +08:00
|
|
|
|
可以通过设置 `python_file_head` 选项:
|
2019-09-06 00:34:36 +08:00
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
[[layers]]
|
|
|
|
|
name = "lang#python"
|
2019-09-25 18:37:22 +08:00
|
|
|
|
python_file_head = [
|
2019-09-06 00:34:36 +08:00
|
|
|
|
'#!/usr/bin/env python',
|
|
|
|
|
'# -*- coding: utf-8 -*-',
|
|
|
|
|
'',
|
|
|
|
|
''
|
|
|
|
|
]
|
|
|
|
|
```
|
2019-06-02 16:43:38 +08:00
|
|
|
|
|
2019-09-25 18:37:22 +08:00
|
|
|
|
默认自动补全是不显示类型信息,因为这会让补全变得比较慢,如果需要显示,可以启用 `enable_typeinfo` 选项:
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
[[layers]]
|
|
|
|
|
name = "lang#python"
|
|
|
|
|
enable_typeinfo = true
|
|
|
|
|
```
|
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
## 快捷键
|
|
|
|
|
|
|
|
|
|
### 跳至定义处
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-02-03 20:51:01 +08:00
|
|
|
|
| 模式 | 快捷键 | 功能描述 |
|
|
|
|
|
| ------ | ------ | -------------------- |
|
|
|
|
|
| Normal | `g d` | 跳至光标函数的定义处 |
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
### 代码生成
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-02-03 20:51:01 +08:00
|
|
|
|
| 模式 | 快捷键 | 功能描述 |
|
2018-06-23 14:37:41 +08:00
|
|
|
|
| ------ | ----------- | -------------- |
|
|
|
|
|
| Normal | `SPC l g d` | 生成 docstring |
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-06-02 16:43:38 +08:00
|
|
|
|
### 测试覆盖
|
|
|
|
|
|
2019-09-25 18:37:22 +08:00
|
|
|
|
| 模式 | 快捷键 | 功能描述 |
|
2019-06-02 16:43:38 +08:00
|
|
|
|
| ------ | ----------- | ----------------- |
|
|
|
|
|
| normal | `SPC l c r` | coverager report |
|
|
|
|
|
| normal | `SPC l c s` | coverager show |
|
|
|
|
|
| normal | `SPC l c e` | coverager session |
|
|
|
|
|
| normal | `SPC l c f` | coverager refresh |
|
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
### 交互式编程
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
启动 `python` 或 `ipython` 交互进程,快捷键为: `SPC l s i`。如果存在可执行命令 `ipython`,
|
|
|
|
|
则使用该命令为默认的交互式命令;否则则使用默认的 `python` 命令。可通过设置虚拟环境来修改可执行命令。
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
将代码传输给 REPL 进程执行:
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-02-03 20:51:01 +08:00
|
|
|
|
| 快捷键 | 功能描述 |
|
2018-06-23 14:37:41 +08:00
|
|
|
|
| ----------- | ----------------------- |
|
|
|
|
|
| `SPC l s b` | 发送整个文件内容至 REPL |
|
|
|
|
|
| `SPC l s l` | 发送当前行内容至 REPL |
|
|
|
|
|
| `SPC l s s` | 发送已选中的内容至 REPL |
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
### 运行当前脚本
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-02-03 20:51:01 +08:00
|
|
|
|
在编辑 Python 文件时,可通过快捷键 `SPC l r` 快速异步运行当前文件,运行结果会展示在一个独立的执行窗口内。
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2019-01-05 19:14:00 +08:00
|
|
|
|
### 整理 imports
|
2018-01-27 01:07:02 +08:00
|
|
|
|
|
2018-06-23 14:37:41 +08:00
|
|
|
|
| 快捷键 | 按键描述 |
|
|
|
|
|
| ----------- | ------------------------------- |
|
|
|
|
|
| `SPC l i r` | 使用 autoflake 移除未使用的导包 |
|
|
|
|
|
| `SPC l i s` | 使用 isort 对导包进行排序 |
|