热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文介绍在常用的IDE编辑器都提供一键执行代码的命令或插件(如VisualStudio的F5快捷键,SublimeText的在

本文介绍在 如何将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 代码。

filetype plugin on
" 按 F5 执行当前 Python 代码"
map  :call PRUN()
func! PRUN()
    exec "w" 
    if &filetype == 'python'
        exec "!python %"
    endif
endfunc

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

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

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

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

3. 模糊搜索插件ctrlp

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

vim-flake8 插件其实整合了 pyflakes 插件与 autopep8 插件,该插件依赖 flake8 (Python官方发布的一款辅助检测 Python 代码是否规范和正确的工具) 工具,可通过 pip3 install flake8 命令进行安装。

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

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

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

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

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配置成适用于Python开发的IDE环境(2020最新)

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

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

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

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

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

10. Vim内集成Git

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

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

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

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

《女程序员说》

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 关于sublime text3 package control无法使用问题的解决
    关于sublimetext3packagecontrol无法使用问题的解决,Go语言社区,Golang程序员人脉社 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 编辑器VSCode使用心得
    工欲善其事必先利其器,趁手的工具会使我们开发事半功倍。市面上的编辑器我用过许多,编辑器使用经历Notepad++,(开源)这个应该是最轻量级的吧,查看代码还好,编辑代码就算了官网地 ... [详细]
author-avatar
啊啊毛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有