阅读更多

0顶
0踩

编程语言

转载新闻 优雅的在终端中编写Python

2017-03-30 11:10 by 副主编 jihong10102006 评论(1) 有5439人浏览
前言
最早我也只是在服务器上编辑文件的时候用用vim来改改程序,并没有把vim当做自己的主力编辑器。但是偶然的一次机会需要改一个奇葩的输入文件的格式,用了下Vim的宏录制,尝到了甜头,于是后面就开始用Vim来写程序了,虽然使用初期有些阻力,但时间久了就会发现,双手再也不用离开键盘,即使使用sublime这样的编辑器我也要改成使用Vim模式,Vim真的能让自己一思维的速度编辑文本(对我来说就是写程序了)。

正好最近换了新的电脑,需要在新电脑上配置一下,就干脆把一些配置相关的东东记录下来吧,相关的配置文件我都放在了github(https://github.com/PytLab/dotfiles) 上并写了相应的安装和卸载脚本,给有需要的同学做个参考吧。

本文是有关配置的文章,并不对Vim的核心技巧进行说明,有需要的童鞋可以参考文档和相关书籍。这里主要配合tmux和vim可以更有优雅的帮助我们在终端中进行Python编程。

先来个大致的效果图吧:

正文
终端窗口管理工具Tmux
首先还是需要配置下tmux,它除了可以进行多window多panel以外最主要的是他提供了窗口组随时存储和恢复的功能。也可以帮助我们在一个窗口中使用多个panel一边使用vim一边在ipython中进行测试。

tmux的配置文件是当前用户主目录下的.tmux.conf文件,启动tmux时会自动加载,也可以通过在tmux中进行加载例如<prefix> : source ~/.tmux.conf。

完整的配置文件参见:https://github.com/PytLab/dotfiles/blob/master/.tmux.conf

修改快捷键前缀
关于tmux的配置比较简单,我先把快捷键的前缀从Ctrl-b换成了Ctrl-l,主要是根据个人喜好,因为这样左手Ctrl右手l个人觉得比较方便。

修改分屏快捷键
tmux的分屏快捷键默认值为:
  • <prefix> + " 水平分屏
  • <prefix> + % 垂直分屏
感觉好奇怪,我就改成了相对直观的方式:
  • <prefix> + |, 类似在屏幕上加一条处置线
  • <prefix> + -, 类似在屏幕上加一条水平线

将复制模式改为vim的复制模式
由于使用vim习惯了而且不想在去碰鼠标,tmux也是可以将复制模式修改成同Vim相同的方式,只是操作的前缀不同罢了。

绑定面板切换快捷键
这里面板切换上,我将面板的上下左右方向绑定到了kjhl四个同Vim中光标移动一样的四个键上同Vim保持一致,这样就不需要在记住新的方向键了。

修改面板大小的快捷键
这里为了能够将大小更灵活的移动,我将鼠标控制打开,这样就能通过鼠标进行方便精准的面板大小调整了。

配置当然要根据自己的使用习惯来设置,这里仅仅给出参考。这样我们将多窗口终端的控制玩弄于手掌之中啦。

Vim配置
解决了终端窗口问题,我们开始大刀阔斧的捣鼓编辑器啦,这里我对我使用的几个Vim插件进行整理,以及几个基本配置进行下说明。

完整的vim配置文件参见: https://github.com/PytLab/dotfiles/blob/master/.vimrc

关于Vim安装
这里主要说一下在Mac上的Vim安装,Vim的官网以及YouCompleteMe的README都有推荐使用MacVim, 但是如果我们并不想在使用Vim的时候还打开新的窗口而是直接在终端使用Vim的话需要在安装MacVim后做一点小处理。
1、安装MacVim

2、使用MacVim的mvim脚本覆盖掉系统自带的vim

自动给打开的文件添加头部
例如我们编写Python脚本的时候经常会在文件开头添加执行文件的Python路径以及文件的编码方式,我们可以通过在Vim的配置文件中添加一个函数,并让他在打开一个新的缓冲区的时候自动添加到头部。

这样当我们使用

的时候便会匹配到文件后缀并执行头部添加函数进行内容添加, 其他语言的脚本例如bash、perl等都是类似的方式。

安装插件管理器Vundle
如果要安装插件,必须要有个方便的插件管理器,Vim的插件管理器有很多,这里我使用了Vundle,它的全称是Vim Bundle,可以让我们轻松的安装、更新、搜索和清理Vim插件。Vundle本身是一个Vim插件,所以使我们安装所有插件中最早需要安装的插件。

Vundle的安装方式这里就不详细介绍了,可以参见:https://github.com/VundleVim/Vundle.vim
安装好后我们需要修改下.vimrc文件:

这样如果我们想安装插件的话我们只需要在call vundle#begin() 和 call vundle#end()之间直接写入就好了,非常方便,写好后我们直接运行

vundle便会自动下载并安装好插件,我们直接作为伸手党使用就好啦.

自动补全神器YouCompleteMe
YouCompleteMe是一个非常强大的Vim自动补全插件,他的特别之处就在于他并不是像vim自带的Ctrl-x和Ctrl-n那样基于文本进行补全,而是基于语义,通过分析源文件进行语法分析,这得益于强大的clang/llvm。同时YCM也整合了多种插件,其中也包含语法纠错,类似Syntastic的功能,但是只能进行C/C++/Objective-C的语法检测,对于Python的话我们后面需要安装Syntastic插件。

YCM虽然强大,但是安装却稍微麻烦些,首先他文件比较大,另外需要自己进行编译(NeoVundle插件管理器貌似可以直接帮你自动编译), 不过无论我之前在ubuntu还是现在的mac上,至少我还是没有遇到什么很大的问题的。

具体的安装请参考YCM的安装说明: https://github.com/Valloric/YouCompleteMe#installation

YCM的相关设置:

YCM除了在.vimrc中进行配置外,还有一个Python的配置文件.ycm_extra_conf.py,在里面我们可以设置相应的编译选项,比如编译参数,头文件和库文件的地址等等,这样我们在编写C/C++等的时候ycm会找到相应的头文件和库文件进行编译并给出相应的提示。这个文件需要根据自己的项目根据自己的文件位置进行自定义。

我的.ycm_extra_conf.py的完整版:https://github.com/PytLab/dotfiles/blob/master/.ycm_extra_conf.py

为Python的缩进助力
写Python的时候你一定需要一款帮助你显示缩进的插件,indentLine就是一款提供缩指示线的插件,有纯文字实现,有了他在判断Python代码块的时候就方便了许多。

插件地址:https://github.com/Yggdroot/indentLine

我相应的配置:

效果:

对打开的多个文件进行操作
当我们写代码的时候不可能每次只打开一个文件,而是打开很多个,而且要经常在这之间来回切换。vim提供了自己的buffer管理工具,但是并不直观,这时可以使用minibufexplorer插件,这样便可以像切换tab一样在Vim中进行buffer的切换来同时编辑多个文件。

效果如下图:

我们可以通过根据前面的buffer序号来使用Ctrl+w :b buffer-number来快速切换。

使用Pylint来帮助我们进行Python语法检测
首先Pylint是一个代码分析工具,它能够分析Python中的代码错误,查找不符合风格标准(默认PEP8)和有潜在问题的代码,如果单独使用的话,他还可以为我们的Python代码进行检测并生成一份报告,并为你的代码进行评分,像这样:


我们可以利用syntastic插件来使用pylint帮助我们进行语法检查。

syntastic的安装可以直接通过Vundle来进行方便的安装,安装后我们需要进行下配置:

这里主要涉及两个部分的配置,
  • 一个是将检测模式改成被动,由于Syntastic检测并不是异步进行的,如果每次保存的时候都进行检测,都会卡在那里等一会,如果我的代码比较大的话会更久,所以我们在想要检测的时候在检测。
  • 忽略掉一些我们不想看到的warnign,pylint完全按照PEP8来的话,我的代码经常会各种提示的warning,比如我喜欢在代码最后一行留个空行也会有提示,因此我就通过正则表达式将次信息过滤掉,这时候就需要设置syntastic_quiet_message变量了。

树形目录方便文件查看
像其他IDE一样,左边有树形目录的话,所有文件夹和文件都一目了然那一定是极好的,所以NERDTree插件就是这么一款工具,他可以直接通过Vundle进行安装,然后在配置文件中设置启动的快捷键以及窗口大小和忽略显示的文件等等。


在项目中迅速定位文件
ctrlp.vim 顾名思义,就是提供了同Sublime的Ctrl+p的功能,可以直接通过Vundle安装,在配置文件中将其映射到功能键上便可以快速启动搜索,支持模糊匹配。


显示文件中的类、函数、变量
tagbar插件可以帮助我们显示当前文件中的类、函数、变量等,方便我们阅读代码,它是基于ctags的,支持很多语言,具体详见:https://github.com/majutsushi/tagbar/wiki
安装好ctags之后可以直接从Vundle中进行安装。

在配置文件中可以将其绑定到快捷键上方便快速启动。

效果如下:

其他插件
Vim 的插件很丰富,这里我就不再一一赘述了,希望这些强大的工具能让我们在终端中更优雅的编写Python(不限于Python啦),有关我使用的vim插件都在我的.vimrc中,有兴趣的童鞋可以搜索相应的插件名称进行查看。

同时为了方便自己我也写了相应的安装和卸载脚本,方便大家参考,github地址:https://github.com/PytLab/dotfiles

总结
本文主要简单介绍下本人平时编程中使用tmux,vim等工具的配置,希望能借此帮助大家能更好的在终端中进行程序编写提高工作效率。

最后还是建议配置文件中不要盲目复制粘贴别人的配置,最好保证里面的配置自己都知道是做什么的,而且是对自己需要的。
  • 大小: 381 KB
  • 大小: 4 KB
  • 大小: 4.4 KB
  • 大小: 12.9 KB
  • 大小: 9 KB
  • 大小: 9.4 KB
  • 大小: 66.3 KB
  • 大小: 1.8 KB
  • 大小: 3.2 KB
  • 大小: 3.2 KB
  • 大小: 12.7 KB
  • 大小: 1.2 KB
  • 大小: 10.2 KB
  • 大小: 1.6 KB
  • 大小: 27.5 KB
  • 大小: 23.4 KB
  • 大小: 77.9 KB
  • 大小: 5.9 KB
  • 大小: 86.4 KB
  • 大小: 55.2 KB
  • 大小: 1.8 KB
  • 大小: 214.4 KB
  • 大小: 30.1 KB
  • 大小: 75.6 KB
  • 大小: 10.9 KB
  • 大小: 97.5 KB
  • 大小: 1.6 KB
  • 大小: 43.2 KB
  • 大小: 1.9 KB
  • 大小: 85.6 KB
  • 大小: 20.5 KB
来自: pytlab
0
0
评论 共 1 条 请登录后发表评论
1 楼 zhanggang807 2017-03-31 13:19
这么好的文章,占个沙发

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 什么叫在终端中输入python_优雅的在终端中编写Python

    原标题:优雅的在终端中编写Python前言最早我也只是在服务器上编辑文件的时候用用vim来改改程序,并没有把vim当做自己的主力编辑器。但是偶然的一次机会需要改一个奇葩的输入文件的格式,用了下Vim的宏录制,尝到了...

  • python中文开发者社区1002无标题_优雅的在终端中编写Python无标题文章

    前言最早我也只是在服务器上编辑文件的时候用用vim来改改程序,并没有把vim当做自己的主力编辑器。但是偶然的一次机会需要改一个奇葩的输入文件的格式,用了下Vim的宏录制,尝到了甜头,于是后面就开始用Vim来写程序...

  • 什么叫在终端中输入python_在终端中优雅地编写Python

    map :TagbarToggle 效不雅如下: 其他插件 Vim 的插件很丰富,这里我就不再一一赘述了,欲望这些强大年夜的对象能让我们在终端中更优雅的编写Python(不限于Python啦),有关我应用的vim插件都在我的.vimrc中,有兴趣的...

  • python做一个界面程序_给你Python程序构建一个优雅的终端CLI界面

    我们知道在Linux下有文雅的shell终端号令行界面,shell剧本都能够文雅用号令行的方式来运转。而且shell也再带优化号令行参数剖析的bash内部号令getopts和大多数刊行版附带的外部号令getops。Perl言语也有Getopt::...

  • 【python技能树】python简介

    Python 是解释型语言:开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言:可以在一个 Python 提示符&gt;&gt;&gt;后直接执行代码。 Python 是面向对象语言:Python支持面向对象的...

  • python终端_python 终端

    广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!... 其实这个在python中很好实现,使用转义序列来实现不同颜色的显示,转义序列以e...

  • 如何在Python中优雅地处理JSON文件

    在本文中,我们将学习如何使用Python读取、解析和编写JSON文件。我们将讨论如何最好地处理简单的JSON文件以及嵌套的JSON文件,当然我们也将讨论如何访问Json文件数据中的特定值。 2. 什么是JSON文件? JSON(Java ...

  • python的终端窗口怎么打开_python终端窗口

    《易学Python》——1.4 Linux本节书摘来自异步社区《易学Python》一书中的第1章,第1.4节,作者[澳]Anthony Briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.4 Linux如何在Linux...

  • 如何在vscode中debug python代码,包括如何优雅地传入多个参数

    Visiul Studio Code, 简称vscode,是一款轻量级代码编辑器,其丰富的扩展程序使得其可以方便地作为任何语言的编辑器。本文将讲述如何在vscode中对python脚本文件进行debug。如难以理解或出现错误欢迎指正。

  • 【Python技巧】在Python中如何优雅地记日志

    在编写调试Python代码过程中,我们经常需要记录日志,通常我们会采用python自带的内置标准库logging,但是使用该库,配置较为繁琐。为了提升编程效率,本文重点介绍最近发现的一个宝藏第三方日志库Loguru,该库名字...

  • Python文本终端GUI框架,太酷了

    urwid.MainLoop 设置 Urwid 的主循环,将 fill 作为控件的绘制入口,参数...虽然基于文本终端的 UI 早已不是主流,但是在一些特殊的行业或者业务中,还是有其存在的价值,研究一下,说不定在特殊的地方可以帮助到我们。

  • IDEA中配置Python环境并运行

    mac 一般自带 python环境 ,在终端中 输入python就会有相关环境信息 Window 平台上安装 Python 的简单步骤如下 打开 WEB 浏览器访问https://www.python.org/downloads/windows/ 选择其中的一个版本下载,下载后,...

  • 毕业设计MATLAB_执行一维相同大小矩阵的QR分解.zip

    毕业设计matlab

  • ipython-7.9.0.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • debugpy-1.0.0b3-cp37-cp37m-manylinux2010_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • libaacs-devel-0.10.0-1.mga8.i586.rpm

    rpm -i xx.rpm 只要报错遇到aacs的可以看看架构是否一致

  • 几个ACM算法pdf.zip

    [ACM国际大学生程序设计竞赛题解].pdf ACM模板-清华大学.pdf ACM算法模板(吉林大学).pdf

  • MATLAB设计_计算局部曲率半径,累积弧长和曲率矢量.zip

    毕业设计MATLAB

  • 毕业设计MATLAB_井字游戏.zip

    毕业设计MATLAB

  • libaacs0-0.6.0-1.fc20.x86_64.rpm

    aacs0报错安装 rpm -i xx.rpm 注意架构是否正确

Global site tag (gtag.js) - Google Analytics