使用 VIM 打造 自己的 Python3 IDE 編輯器

本文鏈接: http://m.itdecent.cn/p/bba4fcb6edb3

一、源碼安裝 vim

特別說明:

假如你不想使用 vim-flake8 插件 可以不用重新編譯安裝 vim,只要保證 vim 的版本是 >=7.3 ,查看當(dāng)前 vim 版本,執(zhí)行命令: vim --version

1 下載源碼包

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

2 配置支持 Python2 和 python3

需要保證系統(tǒng)中編譯安裝了 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 驗證

安裝完成后,在命令行終端輸入如下命令使當(dāng)前 shell 使用新的 vim

source    /etc/profile

接下來在命令行終端繼續(xù)輸入如下命令,驗證是否支持 python3

vim --version|grep python

+python3/dyn 表示支持

image.png

二、快速執(zhí)行 vim 正在編輯的代碼

常用的 IDE 編輯器都提供一鍵執(zhí)行代碼的命令或插件 (如 VSCode 的 F5 快捷鍵)。不退出 Vim (甚至可以不保存)的情況下而直接執(zhí)行 Vim 當(dāng)前打開的 Python 文件是一個非常高效的操作方式。

~/.vimrc 配置文件中添加如下配置就可以實現(xiàn)在 Vim 的普通模式下按 F5 一鍵執(zhí)行 Python 代碼。

三、安裝插件管理器

要想讓 vim 更強大,就需要給它安裝相應(yīng)的插件,要安裝和管理這些插件,首先需要安裝一個插件管理器。

這里選擇的是 Vundle

1 安裝 Vundle

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

2 設(shè)置 Vundle

在用戶家目錄下的 .vimrc 文件的開頭,添加如下內(nèi)容

切記使用 vi 命令打開并編輯

set nocompatible              " 必須
filetype off                  " 關(guān)閉自動文件類型檢查,必須

" 設(shè)置運行時包含 Vundle 的路徑和 初始化,必須
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()  " 開始調(diào)用  Vundle 進行插件的管理

" 首先必須加載 Vundle 插件
Plugin 'VundleVim/Vundle.vim'

" 在下面編寫自己需要用的的插件

" 所有要使用的插件,必須在下面一行之前
call vundle#end()            " 必須的
filetype plugin indent on    " 打開文件類型檢查,必須的


" 下面是幫助信息
" :PluginList       - 列出已經(jīng)安裝且配置好的插件
" :PluginInstall    - 安裝插件
" :PluginUpdate  - 更新現(xiàn)有的插件
" :PluginClean      - 清空沒有在 .vimrc 文件中配置的插件
"
" 把你的非插件的其他設(shè)置放在這行后面

設(shè)置好配置文件后,可通過下述兩種方法安裝插件:

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

(2) 在終端命令行下通過命令vim +PluginInstall +qall直接安裝

接著,退出 vi 并在命令行中執(zhí)行如下命令安裝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 的,所以應(yīng)該都支持此功能。

2 安裝和配置

如果使用vundle安裝indentLine,只需要在Vim配置文件 ~/.vimrc 中增加如下內(nèi)容
Plugin 'Yggdroot/indentLine'

并使用 :PluginInstall 進行安裝即可。

3 使用

在Vim命令行模式下可以使用 :IndentLinesToggle 命令打開或者關(guān)閉顯示縮進指示線。

默認情況下,當(dāng)有二級縮進的時候,就會顯示縮進標識了,默認的縮進標識是 |

image.png

  1. 定制縮進標識

可以在 .vimrc 中使用下面的配置設(shè)置自定義的縮進標識

let g:indentLine_char='??'

image.png

提示:顯然這些縮進標識都不會真正的保存在你的文件中。

五、 代碼自動格式化插件 autopep8

vim-autopep8是一個將Python源代碼自動格式化為滿足PEP8規(guī)范的Vim插件。

安裝后在 Vim 普通模式下執(zhí)行 :Autopep8 命令就可以按照 PEP8 標準規(guī)范自動格式化 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 內(nèi)集成 flake8 (由 Python 官方發(fā)布的一款輔助檢測 Python 代碼是否規(guī)范的工具,整合了 PyFlakes 和 PEP 8 兩個代碼檢查軟件的功能) 的代碼檢測功能的 Vim 插件,可用于對 Vim 打開的當(dāng)前 Python 代碼進行靜態(tài)的語法檢查和格式檢測。該插件依賴 flake8 (Python官方發(fā)布的一款輔助檢測 Python 代碼是否規(guī)范和正確的工具) 工具,可通過 pip3 install flake8 命令進行安裝。

1 插件安裝和配置

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

2 使用 F7

或者執(zhí)行 flake8 /path/to/file.py

若果希望在每次保存文件的時候執(zhí)行檢查,可以在 ~/.vimrc 中配置如下內(nèi)容

autocmd BufWritePost *.py call flake8#Flake8()

七、括號/引號自動補齊插件 auto-pairs

使用 auto-pairs 插件,可以在 Vim 插入模式下,輸入左大括號后自動補全右大括號;在一對括號之間按回車鍵,將自動分為 3 行并調(diào)整縮進和光標位置。

1 插件安裝和配置

在 Vim 配置文件 ~/.vimrc 的合適位置添加 Plugin 'jiangmiao/auto-pairs' 后再在 Vim 的命令行模式下執(zhí)行 :PluginInstall 命令即可完成插件的安裝。

2 使用

Insert in pair

input: [
output: [|]

八、多括號顯示不同顏色的插件 rainbow_parenthsis

使用 Vim 編寫 Python 代碼時經(jīng)常會出現(xiàn)一行代碼中有多重括號嵌套的場景,這使得閱讀和分析這種連續(xù)嵌套的多重括號變得較為困難。

rainbow_parenthsis 是一個對不同層次的括號 (包括()[]、{}<>) 使用不同彩色進行高亮匹配顯示的 Vim 插件,雖然功能較為簡單,但是卻十分實用。

1 安裝和配置

~/.vimrc 中添加 Plug 'kien/rainbow_parentheses.vim' 后執(zhí)行 :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 插件可以實現(xiàn)快速注釋連續(xù)的多行代碼,也可以注釋掉從當(dāng)前光標所在位置到行尾的剩下內(nèi)容,還可以注釋掉從當(dāng)前光標所在位置到行尾的剩下內(nèi)容。在 ~/.vimrc 文件中添加設(shè)置
map <F4> <leader>ci <CR> 可以實現(xiàn)按 F4 鍵快速注釋和反注釋當(dāng)前行。

nerdcommenter 插件,需要打開 Vim 加載文件類型插件的功能
請保證在 ~/.vimrc 文件中正確添加了如下配置項

set  filetype plugin indent on

1 安裝和配置

Vim 的配置文件中添加 Plugin 'preservim/nerdcommenter',再通過在 Vim 的命令行模式下執(zhí)行 :BundleInstall 命令完成插件的安裝。

2 使用

以下操作需要在 vim 的默認模式下執(zhí)行
默認模式就是 按下 Esc 鍵后的模式

  • 注釋光標所在行
    \cc

  • 注釋向下連續(xù) 3 行,從光標所在行開始,也就是總共注釋 3 行
    3\cc

  • 取消光標所在行的注釋
    \cu

  • 取消向下連續(xù) 3 行的注釋,從光標所在行開始,總共取消注釋 3 行
    3\cu

  • 切換行的注釋狀態(tài) ,就是注釋了,就取消注釋,沒有注釋,就添加注釋??????
    \ci 當(dāng)前行
    3\ci 3 行

是不是感覺被騙了??,這個才是終極辦法啊。

  • 注釋掉從當(dāng)前光標所在位置到行尾的剩下內(nèi)容 ????
    \c$

  • 在行尾添加注釋,并進入 vim 的編輯模式 ????
    \cA

完整的 .vimrc

syntax on " 語法高亮
set nocompatible              " 必須
set backspace=indent,eol,start  " 使用退格鍵刪除光標前面的字符
filetype off                  " 關(guān)閉自動文件類型檢查,必須

" 設(shè)置運行時包含 Vundle 的路徑和 初始化,必須
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()  " 開始調(diào)用  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 代碼規(guī)范
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       - 列出已經(jīng)安裝且配置好的插件
" :PluginInstall    - 安裝插件
" :PluginUpdate  - 更新現(xiàn)有的插件
" :PluginClean      - 清空沒有在 .vimrc 文件中配置的插件
""""""""""""""""""""""""""""""""""""

" 把你的非插件的其他設(shè)置放在這行后面

" 保存 .vimrc 文件后,配置立刻生效
autocmd! bufwritepost $HOME/.vimrc source %

" 打開語法高亮
syntax on

" 開啟自動匹配
set showmatch

"設(shè)置按下 Tab 鍵,實際輸入的是空格
set expandtab

"設(shè)置 expandtab 后,設(shè)置一下按一次 Tab 鍵輸入  4 個空格
set tabstop=4

"set smartindent

"自動縮進時候,縮進 4 個空格
set shiftwidth=4

"總是顯示狀態(tài)欄
set laststatus=2
"顯示光標當(dāng)前位置
set ruler

"表示如果當(dāng)前文件在 Vim 外被修改且未在 Vim 里面重新載入的話,則自動重新讀取。
set autoread

"設(shè)置 Vim 窗口標題。
set title

"關(guān)閉錯誤提示的響鈴
set noerrorbells

"設(shè)置新建文件時候,自動向文件中添加內(nèi)容
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 教程網(wǎng), 博主是個萌妹子??,一般人兒我不告訴他。在此表示感謝!??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容