前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 Vim 编辑器中开发 Python 应用的 Vim 插件

在 Vim 编辑器中开发 Python 应用的 Vim 插件

作者头像
企鹅号小编
发布于 2018-01-05 07:01:48
发布于 2018-01-05 07:01:48
1.9K0
举报
文章被收录于专栏:编程编程

Python-mode 是一个 Vim 插件,它使你能够在 Vim 编辑器中更快的利用包括 pylint、rope、pydoc、pyflakes、pep8、autopep8、pep257 和 mccable 在内的各种库来写 Python 代码,这些库提供了一些编码功能,比如静态分析、特征重构、折叠、补全和文档等。

推荐阅读:如何用 Bash-Support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE

这个插件包含了所有你在 Vim 编辑器中可以用来开发 Python 应用的特性。

Python-mode 的特性

它包含下面这些值得一提的特性:

支持 Python 2.6+ 至 Python 3.2 版本

语法高亮

提供 virtualenv 支持

支持 Python 式折叠

提供增强的 Python 缩进

能够在 Vim 中运行 Python 代码

能够添加/删除断点

支持 Python 对象的 Vim 动作和操作符

能够在运行的同时检查代码(pylint、pyflakes、pylama ……)

支持自动修复 PEP8 错误

允许在 Python 文档中进行搜索

支持代码重构

支持强代码补全

支持定义跳转

在这篇教程中,我将阐述如何在 Linux 中为 Vim 安装设置 Python-mode,从而在 Vim 编辑器中开发 Python 应用。

如何在 Linux 系统中为 Vim 安装 Python-mode

首先安装 Pathogen (它使得安装插件超级简单,并且运行文件位于私有目录中),从而更加容易的安装 Python-mode

运行下面的命令来获取 pathogen.vim 文件和它需要的目录:

# mkdir -p ~/.vim/autoload ~/.vim/bundle && / # curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

然后把下面这些内容加入 ~/.vimrc 文件中:

execute pathogen#infect() syntax on filetype plugin indent on

安装好 pathogen 以后,你可以像下面这样把 Python-mode 插件放入 ~/.vim/bunble 目录中:

# cd ~/.vim/bundle # git clone https://github.com/klen/python-mode.git

然后像下面这样在 Vim 中重建 helptags :

:helptags

你需要启用 filetype-plugin (:help filetype-plugin-on)和 filetype-indent (:help filetype-indent-on)来使用 Python-mode 。

DebianUbuntu 中安装 Python-mode

另一种在 Debian 和 Ubuntu 中安装 Python-mode 的方法是使用 PPA,就像下面这样

$ sudo add-apt-repository https://klen.github.io/python-mode/deb main $ sudo apt-get update $ sudo apt-get install vim-python-mode

如果你遇到消息:“The following signatures couldn’t be verified because the public key is not available”,请运行下面的命令:

现在,使用 vim-addon-manager 启用 Python-mode:

$ sudo apt install vim-addon-manager $ vim-addons install python-mode

在 Linux 中定制 Python-mode

如果想覆盖默认键位绑定,可以在 .vimrc 文件中重定义它们,比如:

" Override go-to.definition key shortcut to Ctrl-] let g:pymode_rope_goto_definition_bind = "" " Override run current python file key shortcut to Ctrl-Shift-e let g:pymode_run_bind = "" " Override view python doc key shortcut to Ctrl-Shift-d let g:pymode_doc_bind = ""

注意,默认情况下, Python-mode 使用 Python 2 进行语法检查。你可以在 .vimrc 文件中加入下面这行内容从而启动 Python 3 语法检查。

let g:pymode_python = 'python3'

你可以在 Python-mode 的 GitHub 仓库找到更多的配置选项: https://github.com/python-mode/python-mode

这就是全部内容了。在本教程中,我向你们展示了如何在 Linux 中使用 Python-mode 来配置 Vim 。请记得通过下面的反馈表来和我们分享你的想法。

作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 爱好者、Linux 系统管理员、网络开发人员,现在也是 TecMint 的内容创作者,他喜欢和电脑一起工作,坚信共享知识。

via: https://www.tecmint.com/python-mode-a-vim-editor-plugin/

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文来自企鹅号 - linuxprobe媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - linuxprobe媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
ClientScriptManager.RegisterStartupScript.
当我们要注册一个在页面启动的脚本时,我们会用ClientScriptManager.RegisterStartupScript 。
全栈程序员站长
2022/09/09
4250
Page.ClientScript.RegisterStartupScript() 方法「建议收藏」
Page.ClientScript.RegisterStartupScript() 方法 与Page.ClientScript.RegisterClientScriptBlock() 方法
全栈程序员站长
2022/09/09
2.2K0
ajaxFileUpload文件
从网上下了个ajaxfileupload的文件,结果不支持ie,又出现各种问题,上网查了,修改了可以支持各种浏览器。
Dylan Liu
2019/07/01
6560
ScriptManager.RegisterStartupScript方法[通俗易懂]
Page.ClientScript.RegisterStartupScript(Page.GetType(), “”, “<script>window.open(‘default2.aspx’)</script>”); 如果页面中使用了Ajax ,则上述代码即使执行也无效果。对这种情况我们通常采用: ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), “alertScript”, “window.open(‘default2.aspx’);”, true); 其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。 第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题. 第三个脚本函数的名字,随便起。 第四个是脚本内容。 第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。
全栈程序员站长
2022/09/14
4870
耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案(续)
原文地址:http://www.cnblogs.com/liulun/archive/2008/08/17/1269675.html
liulun
2022/05/08
1.2K0
发布一个日期选择控件(ASPNET2.0)
The Coolest DHTML Calendar,这是一个在GPL下发布的JS日历程序,具有极高的可配置性,包括外观样式、显示格式、显示内容等等。默认程序是只提供日期选择的,需要设置几个showtime参数才能显示时间选择。下载的程序包(zip)里面已经有详细的说明文档和例子. 这个控件的aspnet 1.1版本的代码在我的donews blog上,代码可以自由修改发布. 代码和示例下载地址:demo using System; using System.Web; using System.Web.U
张善友
2018/01/19
1.9K0
ScriptManager.RegisterStartupScript 方法
1、ScriptManager.RegisterStartupScript 方法 (Page, Type, String, String, Boolean):
全栈程序员站长
2022/09/09
6920
耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案
需求: B/S结构的系统里,用户点一个按钮系统开始发送上千封邮件,要求把发送信息(发送成功数,失败数,剩余数量...)动态实时的反馈给客户.
liulun
2022/05/08
5870
JavaScript跨域解决方式
平时工作中经常被JavaScript跨域问题所困扰,其实有很多种解决方式,下面给大家介绍常用的几种:
Jack Chen
2018/09/14
7940
JavaScript跨域解决方式
编写高质量 JavaScript -- 知识点小记
此番改善之后,匿名function里面的变量作用域不再是window,而是局限在函数内。
书童小二
2018/09/03
1.4K0
web跨域解决方案
阅读目录 什么是跨域 常用的几种跨域处理方法: 跨域的原理解析及实现方法 总结 摘要:跨域问题,无论是面试还是平时的工作中,都会遇到,本文总结处理跨域问题的几种方法以及其原理,也让自己搞懂这方面的知识,走起。 什么是跨域     在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。   JavaScript这个安全策
hbbliyong
2018/03/06
2.8K0
web跨域解决方案
Windows Server 2008 R2 配置Exchange 2010邮件服务器并使用EWS发送邮件
配置环境 配置环境完全在此前一篇文章搭建好的环境下进行配置: http://www.cnblogs.com/zhongweiv/archive/2013/01/04/win2008_addomain_configuration.html Windows版本:Windows Server 2008 R2 Enterprise                      Service Pack 1 系统类型:       64 位操作系统 所在域:          adserv.com E
Porschev
2018/03/28
2.6K0
无需写try/catch,也能正常处理异常
对于企业应用的开发者来说,异常处理是一件既简单又复杂的事情。说其简单,是因为相关的编程无外乎try/catch/finally+throw而已;说其复杂,是因为我们往往很难按照我们真正需要的策略来处理异常。我一直有这样的想法,理想的企业应用开发中应该尽量让框架来完成对异常的处理,最终的开发人员在大部分的情况下无需编写异常处理相关的任何代码。在这篇文章中我们将提供一个解决方案来让ASP.NET应用利用EntLib的异常处理模块来实现自动化的异常处理。 源代码: Sample1[通过重写Page的OnL
蒋金楠
2018/01/15
1.1K0
无需写try/catch,也能正常处理异常
总结收藏的41个JavaScript实用技巧
在文件的根目录放进去这个图片,后缀修改成ico就可以了 6. 可以在收藏夹中显示出你的图标
csxiaoyao
2019/02/18
1.5K0
实用的JS代码段(表单篇)
整理了下比较实用的Javascript代码段,完整的代码参考 1 多个window.onload方法   由于onload方法时在页面加载完成后,自动调用的。因此被广泛的使用,但是弊端是只能实用onload执行一个方法。下面代码段,可以保证多个方法在Onload时执行: function addLoadEvent(func){ var oldonload = window.onload; if(typeof window.onload != 'function'
用户1154259
2018/01/17
2.1K0
100个常用的 JS 代码片段分享,值得你收藏
function cutstr(str, len) { var temp; var icount = 0; var patrn = /[^\x00-\xff]/; var strre = ""; for (var i = 0; i < str.length; i++) { if (icount < len - 1) { temp = str.substr(i, 1); if (patrn.exec(temp) == null) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break } } return strre + "..." }
前端达人
2021/10/08
2.4K0
AttributeCollection类与Attributes.Add方法的使用[通俗易懂]
AttitudeCollection隶属于namespace System.Web.UI命名空间。AttributeCollection类属于集合类,具有其他集合所共有的一些属性。AttributeCollection类用来封装服务器控件的所有属性,可实现对服务器属性集合的添加和删除。控件的属性包括颜色、样式、名称等,这些属性都可以通过AttributeCollection类访问到。
全栈程序员站长
2022/11/09
1.7K0
如何在DataGrid里面产生滚动条而不滚动题头
我们在开发的时候一定遇到,使用DataGrid的时候由于不想分页(数据没有那么多)但是又显示不在一页里面,此时我们希望在DataGrid里面出现一个滚动条,可以上下滚动DataGrid里面的数据而不用上下滚动页面,由于写本文的目的是为了说明如何实现,所以对于细节性的问题读者可以自己思考完成(比如:既要分页又要滚动等等)。为了可以滚动DataGrid我们需要一个可以让客户端的Table滚动js脚本(该js代码我是从CodeProject上面下载的),但又不能滚动Table的题头(也就是第一行)。我们都知道Da
阿新
2018/04/13
1.6K0
41个Web开发者都收藏的实用代码
        1. 将彻底屏蔽鼠标右键 oncontextmenu="window.event.returnValue=false" <table border oncontextmenu=return(false)><td>no</table> 可用于 Table         2. 取消选取、防止复制 <body onselectstart="return false">         3.JS不允许粘贴 onpaste="return false"         4. JS防止复制
Youngxj
2018/06/06
2.4K0
231个web前端的javascript特效分享(仅供本人学习,非教程类型)
<input type=”text” value=”郭强”onfocus=”if(value==’郭强’) {value=”}”onblur=”if
botkenni
2019/09/03
1.4K0
推荐阅读
相关推荐
ClientScriptManager.RegisterStartupScript.
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档