美文网首页
将Vim打造成Python IDE(一):解决80%的问题

将Vim打造成Python IDE(一):解决80%的问题

作者: 虞大胆的叽叽喳喳 | 来源:发表于2019-05-05 09:58 被阅读0次

    《Vim8支持Python3的一些坑》写完后,就真正要将Python打造成一个Python IDE了,其实我是个不愿折腾的人,也不太会折腾,也没用过太多 IDE,毕竟它不是技能,只是工具,但用好了确实能够提高效率。

    之所以选择Vim,主要它是Linxu终端最方便的编辑器,有一定的通用性。但我也不想花太多的时间去学习它,毕竟学无止境,学的越多,耗费的时间也就越多,而且也不是那么好学的,比如它有很多插件,光学一个就能耗费很长时间。

    所以我就找了一篇好文章(realpython.com/vim-and-python-a-match-made-in-heaven),里面讲解的内容能够解决80%的问题,这篇文章也有中文版(codingpy.com/article/vim-and-python-match-in-heaven),但必须注意的是不能只看中文版文章,因为原文更新了一些错误,而中文版没更新,我挑一些觉得重要的说明,同时本文还有一些原文没有提到的技巧。

    1:自动缩进

    Python对缩进要求非常严格,能够实现自动缩进(PEP8标准)是IDE最基本的功能,如果按照原文配置,会报错,需要修改如下:

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

    2:粘帖问题

    选择自动缩进后,如果从别处拷贝了一大段代码,粘帖的时候也会自动缩进,这肯定不符合需求,解决的方法可以手动处理或自动处理。

    手动处理就是Vim文件后:

    #打开粘帖模式
    :set paste
    #关闭粘帖模式
    :set nopaste
    

    自动处理就是打开~/.vimrc(Vim配置文件),然后输入:

    #F3快捷键
    set pastetoggle=<F3>
    

    3:扩展安装问题

    推荐使用 Vundle 进行扩展管理,没有了解扩展工作原理,大概就是从 Github 上下载,然后进行配置,安装的扩展保存在 ~/.vim/bundle 目录下。

    遇到的问题就是 Github 下载不稳定,容易超时,判断是否安装成功比较笨的方法就是去 ~/.vim/bundle 目录下查看某个扩展是否有文件。

    需要注意的是,如果下载失败,你从Github上手动下载的文件保存到 ~/.vim/bundle 是没用的,因为 Vundle 做了一些其他配置工作。

    那么插件和原有软件关系是什么呢?比如 flake8 和 vim-flake8 是两个不同的 Github 仓库,vim-flake8 基于 flak8 做了一些工作,以便符合 Vundle 扩展要求。

    如果实在下载不了扩展怎么办,我从AWS下下载了扩展,然后拷贝到我的阿里云上,这样就能成功安装。

    配置待安装的插件后,必须运行 :PluginInstall 进行安装。

    4:分屏功能

    分屏功能确实挺炫酷,也确实有用,比如借鉴别人代码编程的时候,就可以同时打开两个窗口,结合缓存区功能,不用退出Vim窗口,就能自动切换文件打开。

    "split navigations
    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>
    

    nnoremap可以重新映射快捷键,非常方便。

    5:代码折叠

    也是非常常用的一个功能,可以减少代码的可视区域,所以也是我经常使用的一个功能,配置快捷键可以很方便的打开和关闭折叠。

    " Enable folding
    set foldmethod=indent
    set foldlevel=99
    " 通过空格键快速打开和关闭折叠
    nnoremap <space> za
    

    6:目录树功能

    这个功能也非常有用,尤其在编写一个大型项目的时候,能够在不关闭Vim窗口的情况下,查看代码目录树。

    可以在~/.vimrc配置:

    #F4快捷键快速切换打开和关闭目录树窗口
    map <F4> :NERDTreeToggle<CR>
    

    来回按Ctrl+w快捷键可以在目录树窗口和Vim窗口之间来回切换。

    7:语法检测

    这确定非常有用,能够让你自动找到代码的错误,原文介绍了两个插件,syntastic 是针对所有语言的语法检查,官方推荐的配置:

    set statusline+=%#warningmsg#
    set statusline+=%{SyntasticStatuslineFlag()}
    set statusline+=%*
    
    let g:syntastic_always_populate_loc_list = 1
    let g:syntastic_auto_loc_list = 1
    let g:syntastic_check_on_open = 1
    let g:syntastic_check_on_wq = 0
    

    当然用 vim-flake8 对 Python 进行语法检查可能是更好的,不过需要运行下列命令安装 flake8:

    $ pip3 install flake8
    

    几个有用的tips:

    #F2显示语法错误
    autocmd FileType python map <buffer> <F2> :call Flake8()<CR>
    #保存文件的时候显示错误
    autocmd BufWritePost *.py call flake8#Flake8()
    

    8:自动格式化

    其实 pep8 还是挺严格的,即使使用 vim-flake8 显示Python语法错误,但修改还是很麻烦的,所以使用自动格式化插件就很方便了,主要就是 Chiel92/vim-autoformat 扩展。

    在使用这个扩展工具之前,还是要安装对应的格式化底层工具:

    $ apt-get install python-autopep8
    

    配置 Chiel92/vim-autoformat 扩展的几个tip:

    noremap <F3> :Autoformat<CR>
    au BufWrite * :Autoformat
    let g:autoformat_autoindent = 0
    let g:autoformat_retab = 0
    let g:autoformat_remove_trailing_spaces = 0
    

    需要注意的是在 Vim8和Python3.7下,会有报错:

    Error detected while processing function <SNR>34_TryAllFormatters[56]..<SNR>34_TryFormatterPython3:
    

    目前还未解决。

    9:Vim编辑模式运行Python3

    这个功能很有用,不用退出Vim就能运行代码,编辑 .vimrc:

    map <F6> :call PRUN()<CR>
    func! PRUN()
            exec "w"
            if &filetype == 'sh'
                    :!time bash %
            elseif &filetype == 'python'
                    exec "!clear"
                    exec "!time python3 %"
            endif
    

    直接按 F6 快捷键试下。

    如果没有特殊需求,Vim7 和 Vim8 能共享所有的插件,除非有一天大部分插件用 Python3 编写了。包括 pep8 这样的规范本身和 Python版本也没多大关系,所以我还是使用 Vim7.4 进行编码,比如上述 vim-autoformat 扩展在 Python3 遇到的问题就能避免了。

    本文介绍的插件相信足够使用了,绝对能解决80%的Python编程问题,当然每个扩展还有很多技巧,有需求可以继续学习。


    欢迎关注我的公众号(ID:yudadanwx,虞大胆的叽叽喳喳)和书《深入浅出HTTPS:从原理到实战》。

    相关文章

      网友评论

          本文标题:将Vim打造成Python IDE(一):解决80%的问题

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