我通常使用香草vim,但我的目标是使用vim插件构建python开发环境。
引入语言服务器
vim-lsp-settings是一个插件,可以轻松部署语言服务器。
(注意:vim-lsp需要Vim版本8。(参考))
要使用vim-plug进行安装,请将以下内容添加到.vimrc
1 2 | Plug 'prabirshrestha/vim-lsp' Plug 'mattn/vim-lsp-settings' |
这次我想要一个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中键入以下命令进行安装。
在MacOS / Linux上,语言服务器将安装在以下位置(参考)。
让我们立即检查已安装的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 |
已安装各种。
运行皮棉
可以使用
以下是通过制作许多空白行而生气的示例。
在状态行
上显示短绒消息
如果在
.vimrc中设置以下内容,则警告将显示在状态行上。
1 | let g:lsp_diagnostics_echo_cursor = 1 |
短绒设置
默认配置源是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一起使用。
格式
您可以使用以下命令格式化打开的文件。
执行
格式后,许多空白行已被删除。
在保存文件时自动格式化
您可以在.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' |
让我们
对于python,标准提供了5个模板(参考)。
用vim打开一个新文件,然后按
在这里,选择测试并输入。
如果输入
名称并输入,则将显示如下所示的unittest模板。
如果您想了解更详细的用法,请参阅下文。
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。
没关系,但是我沉迷于当我按下
摘要
在Vim中编写Python!