为Python创建Vim环境

作者: fromradio | 来源:发表于2016-08-04 11:36 被阅读717次

    大部分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

    相关文章

      网友评论

        本文标题:为Python创建Vim环境

        本文链接:https://www.haomeiwen.com/subject/aewqsttx.html