使用Vim(带有语言服务器)构建Python开发环境


我通常使用香草vim,但我的目标是使用vim插件构建python开发环境。

引入语言服务器

vim-lsp-settings是一个插件,可以轻松部署语言服务器。

(注意:vim-lsp需要Vim版本8。(参考))

要使用vim-plug进行安装,请将以下内容添加到.vimrc

1
2
Plug 'prabirshrestha/vim-lsp'
Plug 'mattn/vim-lsp-settings'

:PlugInstall

这次我想要一个python语言服务器。

当前,vim-lsp-settings支持以下四种类型的python语言服务器(ref)。

  • pyls-all :(具有依赖项的pyls)
  • pyls :(没有依赖项的pyls)
  • pyls-ms(Microsoft版本)
  • 绝地语言服务器

目前,我将尝试使用github星最多的pyls。

pyrs内部使用以下工具(参考)。

  • 完成和重命名的绳索
  • Pyflakes短绒检测各种错误
  • McCabe Linter用于复杂性检查
  • pycodestyle linter用于样式检查
  • pydocstyle linter用于docstring样式检查(由--default禁用)
  • autopep8用于代码格式化
  • YAPF用于代码格式化(优于autopep8)

pyrs-all还将同时安装所有上述依赖工具。

通过在

vim中键入以下命令进行安装。

:LspInstallServer pyls-all

在MacOS / Linux上,语言服务器将安装在以下位置(参考)。

$HOME/.local/share/vim-lsp-settings/servers

让我们立即检查已安装的pyls-all的内容。

1
2
3
$ ls $HOME/.local/share/vim-lsp-settings/servers/pyls-all/venv/bin/
activate      activate.fish  easy_install      epylint  isort  pip3    pycodestyle  pyflakes  pyls       python   symilar
activate.csh  autopep8       easy_install-3.7  flake8   pip    pip3.7  pydocstyle   pylint    pyreverse  python3  yapf

已安装各种。

运行皮棉

可以使用

:LspDocumentDiagnostics执行。

以下是通过制作许多空白行而生气的示例。

2020-12-06-23-47-04.png

在状态行

上显示短绒消息

如果在

.vimrc中设置以下内容,则警告将显示在状态行上。

1
let g:lsp_diagnostics_echo_cursor = 1

2020-12-07-01-05-10.png

短绒设置

默认配置源是pycodestyle。

您可以通过以下设置来设置使用flake8设置值。

1
2
3
4
5
6
7
8
9
let g:lsp_settings = {
\   'pyls-all': {
\     'workspace_config': {
\       'pyls': {
\         'configurationSources': ['flake8']
\       }
\     }
\   },
\}

这似乎与使用flake8设置(而非直接flake8)(参考)的pycodestyle和pyflakes一起使用。

格式

您可以使用以下命令格式化打开的文件。

:LspDocumentFormat

2020-12-07-01-08-39.png

执行

格式后,许多空白行已被删除。

在保存文件时自动格式化

您可以在.vimrc中放置以下内容。

1
autocmd BufWritePre <buffer> LspDocumentFormatSync

文档指出,随着

格式的运行,vim可能会变慢(参考)。

其他vim-lsp功能

vim-lsp命令列表中所述,您可以执行其他各种操作,例如定义跳转,函数名称的批量更改等。

为常用命令设置键映射很方便。

您也可以通过安装以下插件来使用自动完成功能。

1
2
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'

使用vim-sonictemplate

立即编写标准代码

通过使用

vim-sonictemplate,您可以立即输出主要功能,单元测试和标准代码的模板/代码片段。

将以下内容添加到

.vimrc

1
Plug 'mattn/vim-sonictemplate'

让我们

:PlugInstall

对于python,标准提供了5个模板(参考)。

用vim打开一个新文件,然后按:Template <tab>键,以查看类,主要和测试候选者,如下所示。

2020-12-07-01-29-50.png

在这里,选择测试并输入。

如果输入

名称并输入,则将显示如下所示的unittest模板。

2020-12-07-01-31-51.png

如果您想了解更详细的用法,请参阅下文。

https://github.com/mattn/vim-sonictemplate/blob/master/doc/sonictemplate.txt

其他摘要工具

我研究并尝试了一些代码片段工具,并采用了vim-sonictemplate,因此我还将介绍其他代码片段工具。

我发现vim-sonictemplate是最简单和最容易使用的。

ultisnips

最常用的与片段相关的vim插件可能是ultisnips。

它似乎功能强大,但是它依赖于python,并且只有在vim本身启用了python 3支持的情况下才能使用。

(这次我没有尝试过ultisnips,所以我不知道如何使用它。)

xptemplate

我尝试了

xptemplate。

<C-\>键绑定将为您提供自动完成的代码段。

没关系,但是我沉迷于当我按下<C-\>时出现垂直线|的现象,这可能是由于iterm的键设置造成的,而我找不到对应的设置完全(mac)。通过标准终端暂时避免)。

摘要

在Vim中编写Python!