为Python创建Vim环境

大部分Python使用者可能习惯使用Sublime Text 3等笔记本式的编辑器。然而实际工作环境中有可能遇到需要在无GUI环境下工作的情况,比如需要登录到虚机上进行调试等。此时vim成为了常用的编辑器选择,所以如何使得vim变得心应手成为一个重要的问题。

第一个问题是vim版本的问题,笔者工作环境中的red hat 6版本的默认vim为7.2,不能支持后面需要用到的YouCompleMe插件。因此,我们需要安装vim7.4版本。首先卸载当前vim

yum erase vim-common

这会连同相关的vim-enhance一同卸载,然后前往下载vim7.4的相关rpm:

上载到服务器后使用

yum install -y 

指令分别安装三个包即可,此时vim的版本为7.4了。

vim界面.png

现在开始配置所需要的vim插件,检查vim是否支持Python,在vim环境下输入

:echo has('python') || has('python3')

如果结果为1则表明支持,否则需要检查当前Python是否正确安装。

vim拥有很强的可扩展性,因此很多开发者为方便自己的代码编写开发了很多小工具,使得vim像一个现代ide一样工作。所以,首先我们需要一个插件管理器。

Vundle

vim有一些插件管理器,这里推荐使用Vundle作为插件管理器。可以将其想象成Python中间的pip包管理器,让包的安装和更新更加简单。

使用如下命令安装:

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

这个命令将Vundle插件管理器下载到vim的bundles目录下,现在可以通过编辑~/.vimrc配置文件来扩展vim了。(一般使用用户的配置文件即可,整个vim的配置文件在目录/etc/vimrc里面)

首先创建这个文件

touch ~/.vimrc

然后编辑进行配置,以下是一些必须的配置项

" 必须项(由于简书不支持vim环境,会在注释末添加一个双引号,真实环境只需句首即可)"
set nocompatible
filetype off

" 在运行目录中添加Vundle "
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" 首先让Vundle管理Vundle,必须 "
Plugin 'gmarik/Vundle.vim'

" 在这里添加你需要的插件 "

call vundle#end()
filetype plugin indent on

然后保存关闭配置文件,随便用vim打开一个文件,输入指令

:PluginInstall

这是Vundle会自动下载,安装,更新所有配置文件里面的插件。

丰富vim功能

学习vim的组合件

vim最重要的一个特性就是完全抛弃了鼠标,所以有很多快捷键帮助程序员快速编写代码,所以第一步是去熟悉组合键

分割当前窗口

使用指令:sv <filename>会水平分割当前窗口,并将新文件打开在当前文件的下方,类似的,使用指令:vs <filename>会竖直分割窗口并在右侧打开新文件。

快捷键默认为Ctrl-w+Ctrl-j,k,l,h,我将其remap到没有Ctrl-w的情形

nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>

快捷键变为:

  • Ctrl-j 跳到下方窗口
  • Ctrl-k 跳到上方窗口
  • Ctrl-l 跳到右方窗口
  • Ctrl-h 跳到左方窗口

代码折叠

大多数IDE支持用户折叠函数或者类定义,首先开启这个功能

" 开启折叠功能 "
set foldmethod=indent
set foldlevel=99

折叠的快捷键为za,如果觉得不方便,可以将其对应到其他键位。

注意vim自带的折叠功能是根据缩进来的,有时候不那么好使,推荐使用插件SimpylFold

Plugin 'tmhedberg/SimpylFold'

Python缩进

在实现部分我们希望有两点,一是遵从PEP8标准,二是更好地自动缩进。在vimrc中添加:

au BufNewFile,BufRead *.py
        \ set tabstop=4 |
        \ set tabstop=4 |
        \ set softtabstop=4 |
        \ set shiftwidth=4 |
        \ set textwidth=79 |
        \ set expandtab |
        \ set autoindent |
        \ set fileformat=unix

这让*.py文件的缩进为标准的四个空格,单行不会超过80个字符,文件储存为unix格式,不会产生转换的问题。

针对其他文件,我们可以定义其格式,比如javascript中习惯两个空格为缩进,因此有

au BufNewFile,BufRead *.js, *.html, *.css
        \ set tabstop=2 |
        \ set softtabstop=2 |
        \ set shiftwidth=2

自动缩进功能我们使用插件indentpython.vim

Plugin 'vim-scripts/indentpython`

标记不必要的空格

有时候我们需要避免一些额外的空格,希望编辑器能对其有一些显示,首先安装插件vim-bad-whitespace

Plugin 'bitc/vim-bad-whitespace'

将被认为是坏空格的地方标记出来

au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/

UTF8支持

这个中文编辑的时候比较重要,添加

set encoding=utf-8

语法检查和高亮

安装语法检测插件和PEP8检查工具

Plugin 'scrooloose/syntastic'
Plugin 'nvie/vim-flake8'

开启Python的代码高亮策略

let python_highlight_all=1
syntax on

颜色方案

这里我使用的是solarizedZenburn

Plugin 'jnurmine/Zenburn'
Plugin 'altercation/vim-colors-solarized'

超级搜索

ctrlP工具可以帮助用户在vim环境里面搜索几乎所有东西

Plugin 'kien/ctrlp.vim'

现在可以通过快捷键Ctrl-p来开启搜索,会把和你输入最相似的返回给你,其次这个工具还会搜索标记。

Git集成

插件vim-fugitive帮助用户可以在vim环境里面执行git命令,具体参见VIMcasts

总结

笔者这几天为了以后有个更好用的线上代码编辑环境测试了好久,当前的这套流程是现在使用的一套,比较好用,但是由于线上机的各种问题,最好的一个插件YouCompletMe没有安装成功,暂时放弃了,有兴趣的读者在自己的机器上面一定要安装这个插件,相当好用。

资源集合

  1. VIM Tutor
  2. VIMcasts
  3. Official Vim docs
  4. Open Vim
  5. Learn Vimscript the Hard Way
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容