22

如何将Vim配置成适用于Python开发的IDE环境(2020最新) | vim教程网

 4 years ago
source link: https://vimjc.com/vim-python-ide.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何将Vim配置成适用于Python开发的IDE环境(2020最新)

本文介绍在如何将Vim打造成IDE编辑器一文的基础上,当前使用的 Vim 已经具备了 IDE 开发环境的基本功能,主要包括:语法高亮、代码自动补齐、函数跳转、目录树形展示、全局搜索、代码折叠等。新增一些适用于 Python 开发的 Vim 插件和配置,助力 Vim 成为 Python 开发工程师们的良配。

1. Vim内一键执行Python代码

常用的 IDE 编辑器都提供一键执行代码的命令或插件 (如 Visual Studio 的 F5 快捷键,Sublime Text的 command + b 组合键)。不退出 Vim 而直接执行 Vim 当前打开的 Python 文件是一个非常高效的操作方式。

~/.vimrc 配置文件中添加如下配置就可以实现在 Vim 的普通模式下按 F5 一键执行 Python 代码。

1
2
3
4
5
6
7
8
9
filetype plugin on
" 按 F5 执行当前 Python 代码"
map <F5> :call PRUN()<CR>
func! PRUN()
exec "w"
if &filetype == 'python'
exec "!python %"
endif
endfunc

:上述配置使用了 Vim 加载文件类型插件功能 (即 filetype plugin on),当检测到当前打开的文件类型是 Python 时,则会执行 !python % 命令,该命令的含义请参考《Vim内部执行shell命令》一文。

Vim一键执行python文件

2. Python语言自动补齐插件jedi-vim

自动补齐几乎是任何一个 IDE 环境都需要支持的功能,Vim下 最常用也最知名的自动补齐插件是YouCompleteMe。但是,对于 Python 开发来说,Vim教程网(https://vimjc.com)更倾向于推荐jedi-vim插件

jedi-vim 是 jedi 作者开源的一个基于 jedi 库实现的 Vim 插件,提供了在 Vim 下对 Python 语言的优秀的自动补全能力,几乎支持了Python的所有语法特性。(:YouCompleteMe 插件实际上也是使用 jedi-vim 来实现 Python 代码的自动补全)。

默认设置下,Vim 插入模式下按 <Ctrl-Space> 就可以触发 jedi-vim 插件的自动补齐功能,输入 . 时也会自动触发自动补齐提醒。除此之外,该插件还支持:跳转到函数定义、显示 Python 文档 (Pydoc)、打开某个引用的模块等强大的功能,建议大家安装试用。

jedi-vim插件

3. 模糊搜索插件ctrlp

模糊搜索某个目录下文件名为 xxx 的文件是日常开发工作中经常遇到的场景 (例如,基于记忆中的部分关键词快速打开某个 Python 函数或类的定义文件)。

Vim教程网(https://vimjc.com)推荐使用 ctrlp插件在 Vim 内直接完成这种模糊操作并在 Vim 内打开要搜索的目标文件。

ctrlp 插件使用纯 vimscript 语言实现,依赖少且配置简单,是一款功能强大且非常流行的 Vim 插件。正如插件名,Vim 普通模式下按 <Ctrl -p> 就可以使用该插件进行模糊搜索。

除了搜索文件,ctrlp 插件还可以模糊搜索Vim缓冲区内容、Vim标签等内容。推荐阅读《Vim模糊搜索插件ctrlp》一文查看该插件的详细功能介绍和使用方法。

vim-ctrlp插件

4. Python代码缩进指示插件indentLine

Python 是一门对缩进非常敏感的语言,而缩进又是一个在 Vim 编辑器下对人眼很不友好的展示方式,因此Vim教程网(https://vimjc.com)推荐使用 indentLine 插件来通过指示线的方式显式地显示 Python 代码缩进。

indentLine缩进指示插件

indentLine 插件实现的功能虽然比较单一,但是提供了较为灵活的配置功能,包括:自定义缩进指示线的颜色、修改缩进指示线的符号等。

在Vim命令行模式下可以使用 :IndentLinesToggle 命令打开或者关闭显示缩进指示线,当需要复制当前 Vim 窗口中的部分 Python 代码时,该命令非常实用 (毕竟复制代码时并不希望复制额外显式的缩进指示线)。

:低于 7.3 版本的 Vim 或编译时未开启 conceal 功能的 Vim 均无法使用 indentLine 插件提供的功能。

5. Python代码自动格式化插件autopep8

个人觉得,对于一名有基本技术追求的程序员来说,满足 PEP8 规范的 Python 代码是日常编码的基本原则。

vim-autopep8是一款自动格式化代码的Vim插件,安装后在 Vim 普通模式下执行 :Autopep8 命令就可以按照 PEP8 标准规范自动格式化 Python 源代码,省去了大量的手工调整代码格式的时间。

vim-autopep8插件

6. Python语法检测插件vim-flake8

Vim 默认配置下对 Python 的语法支持有限,如果需要在编写代码时及时得到变量拼写错误等提示,可使用 syntastic 插件。但 syntastic 是针对所有编程语言的语法检查,可以安装 vim-flake8插件 来实现单独针对 Python 语言的语言检测。

vim-flake8 是一款在 Vim 内集成 flake8 (由 Python 官方发布的一款辅助检测 Python 代码是否规范的工具,整合了 PyFlakes 和 PEP 8 两个代码检查软件的功能) 的代码检测功能的 Vim 插件,可用于对 Vim 打开的当前 Python 代码进行静态的语法检查和格式检测。该插件依赖 flake8 (Python官方发布的一款辅助检测 Python 代码是否规范和正确的工具) 工具,可通过 pip3 install flake8 命令进行安装。

vim-flake8配置

7. 括号/引号自动补齐插件auto-pairs

auto-pairs插件的主要功能是针对各种括号和引号提供自动补全、自动删除等,能有效提供 Vim 插入模式下的输入效率。

例如,使用 auto-pairs 插件,可以在 Vim 插入模式下,输入左大括号后自动补全右大括号;在一对括号之间按回车键,将自动分为 3 行并调整缩进和光标位置。

vim-auto-pairs插件

auto-pairs 插件的功能类似于Vim教程网(https://vimjc.com)介绍的另外一款Vim插件delimitMate,大家可根据自己的喜好决定安装哪一个。

8. 多色彩括号显示插件rainbow_parenthsis

使用 Vim 编写 Python 代码时经常会出现一行代码中有多重括号嵌套的场景,这使得阅读和分析这种连续嵌套的多重括号变得较为困难。

rainbow_parenthsis 是一个对不同层次的括号 (包括()[]{}<>) 使用不同彩色进行高亮匹配显示的 Vim 插件,虽然功能较为简单,但是却十分实用。

Vim 命令行模式下使用 :RainbowParenthesesToggle 命令可打开 rainbow_parenthsis 插件的多色彩括号匹配功能,也可以通过 Vim 的 autocmd 命令设置在打开 Vim 后自动启用 rainbow_parenthsis 插件。

Vim-rainbow_parenthsis

9. 高效率代码注释插件nerdcommenter

快速注释或取消注释多行代码是编程中经常遇到的一种场景,Vim教程网(https://vimjc.com)之前有文章介绍过三种Vim下快速注释/取消注释多行的方法

出于效率和可用性考虑,这里推荐 nerdcommenter 插件。nerdcommenter 插件NERDTree 插件的作者是同一个人 (插件名都相似),支持 C、C++、Java、Python 等多种语言的代码注释功能 (使用了 Vim 的 commentstring 选项),为了保证 nerdcommenter 插件能识别出当前源码文件的类型,需要打开 Vim 加载文件类型插件的功能。

在 Vim 的普通模式和可视化模式下,nerdcommenter 插件可以实现快速注释连续的多行代码,也可以注释掉从当前光标所在位置到行尾的剩下内容,还可以注释掉从当前光标所在位置到行尾的剩下内容。在 ~/.vimrc 文件中添加设置 map <F4> <leader>ci <CR> 可以实现按 F4 键快速注释和反注释当前行。

Vim nerdcommenter插件

10. Vim内集成Git

不退出 Vim 而直接执行基本的 Git 命令是一个非常便利的设置。vim-fugitive 是一个非常优秀的、集成了各种 Git 操作的 Vim 插件。

例如,Vim 命令行模式下使用 :Gstatus 命令可以查看当前工作目录和暂存区的状态,等价于在 Shell 终端执行 git status 命令;在当前Vim窗口执行 :Gwrite 命令会将当前文件添加到 git 工作区,等价于 git add 操作;在当前窗口执行 :Gread 命令会重新检出当前文件,相当于对当前文件执行 git checkout 等。

vim-fugitive插件

qrcode.jpg

《女程序员说》

原创不易,希望能给小女子的公众号加个关注~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK