zoukankan      html  css  js  c++  java
  • 使用 VIM 打造 自己的 Python3 IDE 编辑器

    本文链接: https://www.jianshu.com/p/bba4fcb6edb3

    一、源码安装 vim

    特别说明:

    假如你不想使用 vim-flake8 插件 可以不用重新编译安装 vim,只要保证 vim 的版本是 >=7.3 ,查看当前 vim 版本,执行命令: vim --version

    1 下载源码包

    git clone https://github.com/vim/vim.git
    

    2 配置支持 Python2 和 python3

    需要保证系统中编译安装了 python3

    cd vim
    ./configure  --enable-python3interp=yes --with-python3-config-dir=/usr/local/lib/python3.8/config-3.8-x86_64-linux-gnu/
    
    
    

    3 编译并安装

    make && make install
    

    4 验证

    安装完成后,在命令行终端输入如下命令使当前 shell 使用新的 vim

    source    /etc/profile
    

    接下来在命令行终端继续输入如下命令,验证是否支持 python3

    vim --version|grep python
    

    +python3/dyn 表示支持

     
    image.png

    二、快速执行 vim 正在编辑的代码

    常用的 IDE 编辑器都提供一键执行代码的命令或插件 (如 VSCode 的 F5 快捷键)。不退出 Vim (甚至可以不保存)的情况下而直接执行 Vim 当前打开的 Python 文件是一个非常高效的操作方式。

    ~/.vimrc 配置文件中添加如下配置就可以实现在 Vim 的普通模式下按 F5 一键执行 Python 代码。

    三、安装插件管理器

    要想让 vim 更强大,就需要给它安装相应的插件,要安装和管理这些插件,首先需要安装一个插件管理器。

    这里选择的是 Vundle

    1 安装 Vundle

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

    2 设置 Vundle

    在用户家目录下的 .vimrc 文件的开头,添加如下内容

    切记使用 vi 命令打开并编辑

    set nocompatible              " 必须
    filetype off                  " 关闭自动文件类型检查,必须
    
    " 设置运行时包含 Vundle 的路径和 初始化,必须
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()  " 开始调用  Vundle 进行插件的管理
    
    " 首先必须加载 Vundle 插件
    Plugin 'VundleVim/Vundle.vim'
    
    " 在下面编写自己需要用的的插件
    
    " 所有要使用的插件,必须在下面一行之前
    call vundle#end()            " 必须的
    filetype plugin indent on    " 打开文件类型检查,必须的
    
    
    " 下面是帮助信息
    " :PluginList       - 列出已经安装且配置好的插件
    " :PluginInstall    - 安装插件
    " :PluginUpdate  - 更新现有的插件
    " :PluginClean      - 清空没有在 .vimrc 文件中配置的插件
    "
    " 把你的非插件的其他设置放在这行后面
    

    设置好配置文件后,可通过下述两种方法安装插件:

    (1) 在Vim命令行模式下运行命令:PluginInstall

    (2) 在终端命令行下通过命令vim +PluginInstall +qall直接安装

    接着,退出 vi 并在命令行中执行如下命令安装Vundle插件

    vim +PluginInstall +qall
    

    四、安装自动代码提示补全插件 jedi-vim

     
    image.png
    • Completion <C-Space>
    • Goto assignment <leader>g (typical goto function)
    • Goto definition <leader>d (follow identifier as far as possible, includes imports and statements)
    • Goto (typing) stub <leader>s
    • Show Documentation/Pydoc K (shows a popup with assignments)
    • Renaming <leader>r
    • Usages <leader>n (shows all the usages of a name)
    • Open module, e.g. :Pyimport os (opens the os module)

    .vimrc 文件中添加下面的配置

    Plugin 'davidhalter/jedi-vim'
    

    接下来安装安装此插件,在 vim 命令行模式中输入如下命令

    :PluginInstall

    在 vim 的编辑模式中使用 . 可以激活自动提示功能
    使用 Ctrl+n 也可以激活自动提示功能,并且还可以进行自动补全

    四、显示缩进线的插件 indentLine

    indentLine 插件在 Vim 界面中显示出来的缩进指示线,使用了 Vim 提供的 conceal 功能。

     
    image.png

    1 先决条件

    vim 需要是 7.3 及其以上, Centos7的 vim 都是 7.4 的,所以应该都支持此功能。

    2 安装和配置

    如果使用vundle安装indentLine,只需要在Vim配置文件 ~/.vimrc 中增加如下内容
    Plugin 'Yggdroot/indentLine'

    并使用 :PluginInstall 进行安装即可。

    3 使用

    在Vim命令行模式下可以使用 :IndentLinesToggle 命令打开或者关闭显示缩进指示线。

    默认情况下,当有二级缩进的时候,就会显示缩进标识了,默认的缩进标识是 ¦

     
    image.png
    1. 定制缩进标识

    可以在 .vimrc 中使用下面的配置设置自定义的缩进标识

    let g:indentLine_char=''

     
    image.png

    提示:显然这些缩进标识都不会真正的保存在你的文件中。

    五、 代码自动格式化插件 autopep8

    vim-autopep8是一个将Python源代码自动格式化为满足PEP8规范的Vim插件。

    安装后在 Vim 普通模式下执行 :Autopep8 命令就可以按照 PEP8 标准规范自动格式化 Python 源代码

    1. 插件安装和配置

    vim-autopep8插件依赖于Python工具autopep8,所以在使用vim-autopep8插件前必须先安装autopep8

    pip3 install --upgrade autopep8
    

    接着在 .vimrc中配置并安装

    Plugin 'tell-k/vim-autopep8'
    

    :PluginInstall

    2 使用

    在 vim 中格式化代码

    :Autopep8
    

    指定行范围进行格式化

    :Autopep8 --range 1 5
    

    自定义快捷键, 按下 F8 进行格式化代码

    autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR>
    

    六 语法检测插件vim-flake8

    vim-flake8 是一款在 Vim 内集成 flake8 (由 Python 官方发布的一款辅助检测 Python 代码是否规范的工具,整合了 PyFlakes 和 PEP 8 两个代码检查软件的功能) 的代码检测功能的 Vim 插件,可用于对 Vim 打开的当前 Python 代码进行静态的语法检查和格式检测。该插件依赖 flake8 (Python官方发布的一款辅助检测 Python 代码是否规范和正确的工具) 工具,可通过 pip3 install flake8 命令进行安装。

    1 插件安装和配置

    在 Vim 配置文件 ~/.vimrc中增加 Plugin 'nvie/vim-flake8' 并使用 :PluginInstall 进行安装即可。

    2 使用 F7

    或者执行 flake8 /path/to/file.py

    若果希望在每次保存文件的时候执行检查,可以在 ~/.vimrc 中配置如下内容

    autocmd BufWritePost *.py call flake8#Flake8()
    

    七、括号/引号自动补齐插件 auto-pairs

    使用 auto-pairs 插件,可以在 Vim 插入模式下,输入左大括号后自动补全右大括号;在一对括号之间按回车键,将自动分为 3 行并调整缩进和光标位置。

    1 插件安装和配置

    在 Vim 配置文件 ~/.vimrc 的合适位置添加 Plugin 'jiangmiao/auto-pairs' 后再在 Vim 的命令行模式下执行 :PluginInstall 命令即可完成插件的安装。

    2 使用

    Insert in pair

    input: [
    output: [|]
    

    八、多括号显示不同颜色的插件 rainbow_parenthsis

    使用 Vim 编写 Python 代码时经常会出现一行代码中有多重括号嵌套的场景,这使得阅读和分析这种连续嵌套的多重括号变得较为困难。

    rainbow_parenthsis 是一个对不同层次的括号 (包括()[]{}<>) 使用不同彩色进行高亮匹配显示的 Vim 插件,虽然功能较为简单,但是却十分实用。

    1 安装和配置

    ~/.vimrc 中添加 Plug 'kien/rainbow_parentheses.vim' 后执行 :PlugInstall命令进行安装

    let g:rbpt_colorpairs = [
        \ ['brown',       'RoyalBlue3'],
        \ ['Darkblue',    'SeaGreen3'],
        \ ['darkgray',    'DarkOrchid3'],
        \ ['darkgreen',   'firebrick3'],
        \ ['darkcyan',    'RoyalBlue3'],
        \ ['darkred',     'SeaGreen3'],
        \ ['darkmagenta', 'DarkOrchid3'],
        \ ['brown',       'firebrick3'],
        \ ['gray',        'RoyalBlue3'],
        \ ['darkmagenta', 'DarkOrchid3'],
        \ ['Darkblue',    'firebrick3'],
        \ ['darkgreen',   'RoyalBlue3'],
        \ ['darkcyan',    'SeaGreen3'],
        \ ['darkred',     'DarkOrchid3'],
        \ ['red',         'firebrick3'],
        \ ]
    
    let g:rbpt_max = 16
    let g:rbpt_loadcmd_toggle = 0
    au VimEnter * RainbowParenthesesToggle
    au Syntax * RainbowParenthesesLoadRound
    au Syntax * RainbowParenthesesLoadSquare
    au Syntax * RainbowParenthesesLoadBraces
    
    

    九、快速代码注释插件 nerdcommenter

    在 Vim 的普通模式和可视化模式下,nerdcommenter 插件可以实现快速注释连续的多行代码,也可以注释掉从当前光标所在位置到行尾的剩下内容,还可以注释掉从当前光标所在位置到行尾的剩下内容。在 ~/.vimrc 文件中添加设置
    map <F4> <leader>ci <CR> 可以实现按 F4 键快速注释和反注释当前行。

    nerdcommenter 插件,需要打开 Vim 加载文件类型插件的功能
    请保证在 ~/.vimrc 文件中正确添加了如下配置项

    set  filetype plugin indent on
    

    1 安装和配置

    Vim 的配置文件中添加 Plugin 'preservim/nerdcommenter',再通过在 Vim 的命令行模式下执行 :BundleInstall 命令完成插件的安装。

    2 使用

    以下操作需要在 vim 的默认模式下执行
    默认模式就是 按下 Esc 键后的模式

    • 注释光标所在行
      \cc

    • 注释向下连续 3 行,从光标所在行开始,也就是总共注释 3 行
      3\cc

    • 取消光标所在行的注释
      \cu

    • 取消向下连续 3 行的注释,从光标所在行开始,总共取消注释 3 行
      3\cu

    • 切换行的注释状态 ,就是注释了,就取消注释,没有注释,就添加注释
      \ci 当前行
      3\ci 3 行

    是不是感觉被骗了,这个才是终极办法啊。

    • 注释掉从当前光标所在位置到行尾的剩下内容
      \c$

    • 在行尾添加注释,并进入 vim 的编辑模式
      \cA

    完整的 .vimrc

    syntax on " 语法高亮
    set nocompatible              " 必须
    set backspace=indent,eol,start  " 使用退格键删除光标前面的字符
    filetype off                  " 关闭自动文件类型检查,必须
    
    " 设置运行时包含 Vundle 的路径和 初始化,必须
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()  " 开始调用  Vundle 进行插件的管理
    
    " 首先必须加载 Vundle 插件
    Plugin 'VundleVim/Vundle.vim'
    
    " 在下面编写自己需要用的的插件
    """""""""""""""""""""""""""""""
    
    " Python 代码自动补全提示
    Plugin 'davidhalter/jedi-vim'
    
    " 缩进标识
    Plugin 'Yggdroot/indentLine'
    let g:indentLine_color_term = 239
    "let g:indentLine_char=''
    "let g:indentLine_concealcursor = 'inc'
    "let g:indentLine_conceallevel = 2
    
    Plugin 'MarcWeber/vim-addon-mw-utils'
    
    " 文件名模糊匹配
    Plugin 'tomtom/tlib_vim'
    
    Plugin 'garbas/vim-snipmate'
    
    " Optional:
    Plugin 'honza/vim-snippets'
    
    " Python 代码规范
    Plugin 'tell-k/vim-autopep8'
    Plugin 'nvie/vim-flake8'
    
    " 自动括号匹配
    Plugin 'jiangmiao/auto-pairs'
    
    " 不同括号显示不同颜色
    Plugin 'kien/rainbow_parentheses.vim'
    let g:rbpt_colorpairs = [
        \ ['brown',       'RoyalBlue3'],
        \ ['Darkblue',    'SeaGreen3'],
        \ ['darkgray',    'DarkOrchid3'],
        \ ['darkgreen',   'firebrick3'],
        \ ['darkcyan',    'RoyalBlue3'],
        \ ['darkred',     'SeaGreen3'],
        \ ['darkmagenta', 'DarkOrchid3'],
        \ ['brown',       'firebrick3'],
        \ ['gray',        'RoyalBlue3'],
        \ ['darkmagenta', 'DarkOrchid3'],
        \ ['Darkblue',    'firebrick3'],
        \ ['darkgreen',   'RoyalBlue3'],
        \ ['darkcyan',    'SeaGreen3'],
        \ ['darkred',     'DarkOrchid3'],
        \ ['red',         'firebrick3'],
        \ ]
    " 最多多少个
    let g:rbpt_max = 16
    let g:rbpt_loadcmd_toggle = 0
    
    " 打开Vim后自动启用rainbow_parenthsis插件
    au VimEnter * RainbowParenthesesToggle
    
    " 同时开启对以下 3 种扩号的多彩色高亮显示
    au Syntax * RainbowParenthesesLoadRound " ()
    au Syntax * RainbowParenthesesLoadSquare " []
    au Syntax * RainbowParenthesesLoadBraces " {}
    
    " 快速注释
    Plugin 'preservim/nerdcommenter'
    
    " 所有要使用的插件,必须在下面一行之前
    call vundle#end()            " 必须的
    filetype plugin indent on    " 打开文件类型检查,必须的
    
    
    " 下面是帮助信息
    " :PluginList       - 列出已经安装且配置好的插件
    " :PluginInstall    - 安装插件
    " :PluginUpdate  - 更新现有的插件
    " :PluginClean      - 清空没有在 .vimrc 文件中配置的插件
    """"""""""""""""""""""""""""""""""""
    
    " 把你的非插件的其他设置放在这行后面
    
    " 保存 .vimrc 文件后,配置立刻生效
    autocmd! bufwritepost $HOME/.vimrc source %
    
    " 打开语法高亮
    syntax on
    
    " 开启自动匹配
    set showmatch
    
    "设置按下 Tab 键,实际输入的是空格
    set expandtab
    
    "设置 expandtab 后,设置一下按一次 Tab 键输入  4 个空格
    set tabstop=4
    
    "set smartindent
    
    "自动缩进时候,缩进 4 个空格
    set shiftwidth=4
    
    "总是显示状态栏
    set laststatus=2
    "显示光标当前位置
    set ruler
    
    "表示如果当前文件在 Vim 外被修改且未在 Vim 里面重新载入的话,则自动重新读取。
    set autoread
    
    "设置 Vim 窗口标题。
    set title
    
    "关闭错误提示的响铃
    set noerrorbells
    
    "设置新建文件时候,自动向文件中添加内容
    autocmd BufNewFile *.sh,*.py exec ":call AutoSetFileHead()"
    function! AutoSetFileHead()
        "对于 .sh 文件 "
        if &filetype == 'sh'
            call setline(1, "#!/bin/bash")
        endif
    
        "对于 python3 文件 "
        if &filetype == 'python'
            call setline(1, "#!/usr/bin/env python3")
            call append(1, "# Author: 西瓜甜")
            call append(2, "# Email: shark@126.com")
        endif
    
        normal G
        normal o
        normal o
    endfunc
    

    最后附上友情链接VIM 教程网, 博主是个萌妹子,一般人



    作者:运维开发_西瓜甜
    链接:https://www.jianshu.com/p/bba4fcb6edb3
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    第k短路
    Codeforces Round #608 (Div. 2)
    Codeforces Round #606 E(无向图求pair(x,y)x到y的任意路径一定经过定点a和b的数量)
    Codeforces Round #603 (Div. 2)E
    题解报告:hdu 2717 Catch That Cow(bfs)
    题解报告:poj 3669 Meteor Shower(bfs)
    题解报告:poj 1321 棋盘问题(dfs)
    题解报告:hdu 1312 Red and Black(简单dfs)
    题解报告:poj 1426 Find The Multiple(bfs、dfs)
    hdu 4704 Sum(扩展欧拉定理)
  • 原文地址:https://www.cnblogs.com/xiaoai666/p/13672119.html
Copyright © 2011-2022 走看看