把 vim 配置成顺手的 python 轻量级 IDE

Posted Python开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把 vim 配置成顺手的 python 轻量级 IDE相关的知识,希望对你有一定的参考价值。


来源:yieku 

链接:www.jianshu.com/p/f0513d18742a



网上已经有很多很好的vim使用和配置教程。但每个人都有自己的习惯,因此教程仅作参考,只有在使用过程中才能体会到具体的问题,然后解决问题才能把vim调教的顺手。本文不再赘述vim的操作,直接从配置开始。


一、配置文件


  • 基础配置


vim的所有配置都是在 ~/.vimrc 这个文件中完成。默认是没有的需要自己新建:


cd ~

touch .vimrc

vim .vimrc


以下是我个人的.vimrc文件的基础配置部分,双引号内为注释内容:


"去掉vi的一致性"

set nocompatible

"显示行号"

set number

" 隐藏滚动条"    

set guioptions-=r

set guioptions-=L

set guioptions-=b

"隐藏顶部标签栏"

set showtabline=0

"设置字体"

set guifont=Monaco:h13        

syntax on    "开启语法高亮"

let g:solarized_termcolors=256    "solarized主题设置在终端下的设置"

set background=dark        "设置背景色"

colorscheme solarized

set nowrap    "设置不折行"

set fileformat=unix    "设置以unix的格式保存文件"

set cindent        "设置C样式的缩进格式"

set tabstop=4    "设置table长度"

set shiftwidth=4        "同上"

set showmatch    "显示匹配的括号"

set scrolloff=5        "距离顶部和底部5行"

set laststatus=2    "命令行为两行"

set fenc=utf-8      "文件编码"

set backspace=2

set mouse=a        "启用鼠标"

set selection=exclusive

set selectmode=mouse,key

set matchtime=5

set ignorecase        "忽略大小写"

set incsearch

set hlsearch        "高亮搜索项"

set noexpandtab        "不允许扩展table"

set whichwrap+=,h,l

set autoread

set cursorline        "突出显示当前行"

set cursorcolumn        "突出显示当前列"


  • 一键执行python代码


其他常用的编辑器都有很方便的一键执行的功能或插件,例如Sublime Text的command+b、Atom的script插件。vim实现这个功能只需要在.vimrc中添加如下代码就可以实现F5一键执行python代码,而且由于是调用了vim的quickfix功能,因此还支持如果出现错误,跳转到错误行。


"按F5运行python"

map <F5> :Autopep8<CR> :w<CR> :call RunPython()<CR>

function RunPython()

  let mp = &makeprg

  let ef = &errorformat

  let exeFile = expand("%:t")

  setlocal makeprg=python -u

  set efm=%C %.%#,%A File "%f"\, line %l%.%#,%Z%[%^ ]%\@=%m

  silent make %

  copen

  let &makeprg = mp

  let &errorformat = ef

endfunction


把 vim 配置成顺手的 python 轻量级 IDE(1)


但是这个一键执行有一个小问题,由于quickfix的原因,不支持标准输入input()和raw_input(),只要代码中有这两个函数,100%卡死,目前这个问题貌似还无解。如果不用quickfix就可以支持输入,但是在终端中使用的话就是跳回终端输入和输出;使用macvim的话又会出现输出数据很多时就无法查看全部。由于我在写python是标准输入用的较少,就决定放使用quickfix来保证实用和美观。


二、插件


先上我的插件目录,本文只着重介绍Vundle和YouCompleteMe两个插件因为这两个插件的安装过程比较复杂一些,而其他插件的安装几乎可以算是傻瓜式的:


Plugin 'VundleVim/Vundle.vim'

Plugin 'Valloric/YouCompleteMe'

Plugin 'Lokaltog/vim-powerline'

Plugin 'scrooloose/nerdtree'

Plugin 'Yggdroot/indentLine'

Plugin 'jiangmiao/auto-pairs'

Plugin 'tell-k/vim-autopep8'

Plugin 'scrooloose/nerdcommenter'


Vundle


杀手级插件。这是唯一一个需要手动安装的插件。有了这个,安装其他插件就方便很多。


  • 1、安装


首先需要从github上得到项目的源码,在终端下的命令如下(请自备git):


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


若提醒目录不存在请先自行新建目录:


cd ~

mkdir .vim

cd .vim

mkdir bundle


然后需要在.vimrc文件中添加一些配置才能生效:


filetype off

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

Plugin '你的插件'

call vundle#end()

filetype plugin indent on


  • 2、使用


Vundle安装插件的方法非常简单,只需要两步。先在.vimrc文件中添加Plugin命令:


“这是安装Github上的插件”

Plugin 'Lokaltog/vim-powerline'


把 vim 配置成顺手的 python 轻量级 IDE(1)

下面是安装在vim-script上的插件的方法,引号里为插件名称,其他插件安装方法请自行查看项目主页(https://github.com/VundleVim/Vundle.vim):


Plugin 'L9'


在添加完.vimrc的的配置后,:wq保存并退出vim,重启vim并输入下面的命令后,vim就会自动下载并安装插件了


:PluginInstall


当看到命令行出现Done!就代表所有插件安装完成啦!


把 vim 配置成顺手的 python 轻量级 IDE(1)


YouCompleteMe


杀手级插件。vim上的自动补全神器,能够提供类似IDE的自动补全体验,还能和Syntastic配合提供实时语法检查。YouCompleteMe与其他插件不同的地方在于不仅需要安装,还需要自己手动编译,而且还需要在.vimrc中配置。


YouCompleteMe支持的语言有:


C、Objectiv-c、C#、C++、Objectiv-C++、phpjavascript、Typescript、python、Go、Rust


  • 安装只需要一条命令:


Plugin 'Valloric/YouCompleteMe'


  • 编译的命令:


cd ~/.vim/bundle/YouCompleteMe

./install.py --clang-completer


参数 –clang-completer是为了加上C系列语言的自动补全,如果不需要可以不加,它同时还支持其他语言的补全,详细请看官方文档。


  • YouCompleteMe涉及到的配置选项有很多,笔者也没有完全了解,此外,个人觉得Syntactic的提示略丑陋,因此没有安装。此处指列出笔者在使用的,详细请查看官方文档:


"默认配置文件路径"

let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'

"打开vim时不再询问是否加载ycm_extra_conf.py配置"

let g:ycm_confirm_extra_conf=0

set completeopt=longest,menu

"python解释器路径"

let g:ycm_path_to_python_interpreter='/usr/local/bin/python'

"是否开启语义补全"

let g:ycm_seed_identifiers_with_syntax=1

"是否在注释中也开启补全"

let g:ycm_complete_in_comments=1

let g:ycm_collect_identifiers_from_comments_and_strings = 0

"开始补全的字符数"

let g:ycm_min_num_of_chars_for_completion=2

"补全后自动关机预览窗口"

let g:ycm_autoclose_preview_window_after_completion=1

" 禁止缓存匹配项,每次都重新生成匹配项"

let g:ycm_cache_omnifunc=0

"字符串中也开启补全"

let g:ycm_complete_in_strings = 1

"离开插入模式后自动关闭预览窗口"

autocmd InsertLeave * if pumvisible() == 0|pclose|endif

"回车即选中当前项"

inoremap <expr> <CR>       pumvisible() ? '<C-y>' : '<CR>'    

"上下左右键行为"

inoremap <expr> <Down>     pumvisible() ? '<C-n>' : '<Down>'

inoremap <expr> <Up>       pumvisible() ? '<C-p>' : '<Up>'

inoremap <expr> <PageDown> pumvisible() ? '<PageDown><C-p><C-n>' : '<PageDown>'

inoremap <expr> <PageUp>   pumvisible() ? '<PageUp><C-p><C-n>' : '<PageUp>'


vim-powerline


用于美化状态栏,原生的状态栏略丑而且显示的信息很少,因此这款好看又实用的状态栏就派上用场啦。开箱即用,方便快捷。


把 vim 配置成顺手的 python 轻量级 IDE(1)


Normal模式


把 vim 配置成顺手的 python 轻量级 IDE(1)


Insert模式


至于官网上的三角形效果需要安装额外的字体,笔者表示折腾很久没配置成功,而就这样不影响使用,视觉效果也还不错,因此就懒得折腾了。


NERDTree


给vim添加一个树形目录,更方便的查看和切换文件。


把 vim 配置成顺手的 python 轻量级 IDE(1)


  • .vimrc中的配置:


"F2开启和关闭树"

map <F2> :NERDTreeToggle<CR>

let NERDTreeChDirMode=1

"显示书签"

let NERDTreeShowBookmarks=1

"设置忽略文件类型"

let NERDTreeIgnore=['~$', '.pyc$', '.swp$']

"窗口大小"

let NERDTreeWinSize=25


indentLine、vim-autopep8


indentLine是一款缩进指示线,由纯字符实现,效果比较完美。由于python是靠代码缩进来判断代码块的,因此缩进指示的功能有多方便就不言而喻了。indentLine默认是关闭的,因此需要在.vimrc中配置才能看到效果。



autopep8是一款自动格式化工具,安装后在Normal模式输入:Autopep8或按F8就可以自动依照pep8的标准自动格式化代码。

以下是个人针对它们的配置,其他配置请参考项目主页:


"缩进指示线"

let g:indentLine_char='┆'

let g:indentLine_enabled = 1

 

"autopep8设置"

let g:autopep8_disable_show_diff=1


auto-pairs、nerdcommenter


这两款插件让写代码更方便。auto-pairs主要功能是括号和引号自动补全,输入左引号和左括号自动补全另外一半。


nerdcommenter和上面的NERDTree是同一作者,主要功能是方便的写注释具体用法请参考项目主页。需要注意的是nerdcommenter的leader默认为”“,一般可以用下面的命令更改:


let mapleader=','


一般IDE和很多编辑器都提供command+/快速添加(取消)注释,但是vim添加注释和取消注释需要不同的快捷键,而且多行注释就是泪啊,各种折腾后发现了nerdcommenter的ci命令,只需要在.vimrc文件中添加一条设置就可以一键注释和反注释:


map <F4> <leader>ci <CR>


多行注释只需要在normal模式下按v并移动光标选择需要注释的行,再按F4就可以为所有选中的行添加注释。


结语


至此,所有配置结束,就可以用vim愉快的和python玩耍啦。


水平有限,如有错误,欢迎指正。


关注「Python开发者」

看更多精选Python技术文章

↓↓↓

以上是关于把 vim 配置成顺手的 python 轻量级 IDE的主要内容,如果未能解决你的问题,请参考以下文章

新手学vim配置

LinuxLINUX操作系统下VIM的安装和配置

Centos 中 vim 的配置

配置VIM (Windows)

配置VIM (Windows)

使用Powerline为VIM和Bash注入强劲动力