一终抽、源碼安裝 vim
特別說(shuō)明:
假如你不想使用 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 驗(yàn)證
安裝完成后,在命令行終端輸入如下命令使當(dāng)前 shell 使用新的 vim
source /etc/profile
接下來(lái)在命令行終端繼續(xù)輸入如下命令桶至,驗(yàn)證是否支持 python3
vim --version|grep python
+python3/dyn
表示支持
二昼伴、快速執(zhí)行 vim 正在編輯的代碼
常用的 IDE 編輯器都提供一鍵執(zhí)行代碼的命令或插件 (如 VSCode 的 F5 快捷鍵)。不退出 Vim (甚至可以不保存)的情況下而直接執(zhí)行 Vim 當(dāng)前打開(kāi)的 Python 文件是一個(gè)非常高效的操作方式镣屹。
在 ~/.vimrc
配置文件中添加如下配置就可以實(shí)現(xiàn)在 Vim 的普通模式下按 F5 一鍵執(zhí)行 Python 代碼圃郊。
三、安裝插件管理器
要想讓 vim 更強(qiáng)大女蜈,就需要給它安裝相應(yīng)的插件持舆,要安裝和管理這些插件色瘩,首先需要安裝一個(gè)插件管理器。
這里選擇的是 Vundle
1 安裝 Vundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
2 設(shè)置 Vundle
在用戶家目錄下的 .vimrc
文件的開(kāi)頭逸寓,添加如下內(nèi)容
切記使用 vi
命令打開(kāi)并編輯
set nocompatible " 必須
filetype off " 關(guān)閉自動(dòng)文件類型檢查居兆,必須
" 設(shè)置運(yùn)行時(shí)包含 Vundle 的路徑和 初始化,必須
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin() " 開(kāi)始調(diào)用 Vundle 進(jìn)行插件的管理
" 首先必須加載 Vundle 插件
Plugin 'VundleVim/Vundle.vim'
" 在下面編寫自己需要用的的插件
" 所有要使用的插件竹伸,必須在下面一行之前
call vundle#end() " 必須的
filetype plugin indent on " 打開(kāi)文件類型檢查泥栖,必須的
" 下面是幫助信息
" :PluginList - 列出已經(jīng)安裝且配置好的插件
" :PluginInstall - 安裝插件
" :PluginUpdate - 更新現(xiàn)有的插件
" :PluginClean - 清空沒(méi)有在 .vimrc 文件中配置的插件
"
" 把你的非插件的其他設(shè)置放在這行后面
設(shè)置好配置文件后,可通過(guò)下述兩種方法安裝插件:
(1) 在Vim命令行模式下運(yùn)行命令:PluginInstall
(2) 在終端命令行下通過(guò)命令vim +PluginInstall +qall
直接安裝
接著勋篓,退出 vi 并在命令行中執(zhí)行如下命令安裝Vundle插件
vim +PluginInstall +qall
四吧享、安裝自動(dòng)代碼提示補(bǔ)全插件 jedi-vim
- 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'
接下來(lái)安裝安裝此插件,在 vim 命令行模式中輸入如下命令
:PluginInstall
在 vim 的編輯模式中使用 .
可以激活自動(dòng)提示功能
使用 Ctrl+n
也可以激活自動(dòng)提示功能譬嚣,并且還可以進(jìn)行自動(dòng)補(bǔ)全
四钢颂、顯示縮進(jìn)線的插件 indentLine
indentLine 插件在 Vim 界面中顯示出來(lái)的縮進(jìn)指示線,使用了 Vim 提供的 conceal 功能孤荣。
1 先決條件
vim 需要是 7.3 及其以上甸陌, Centos7的 vim 都是 7.4 的须揣,所以應(yīng)該都支持此功能盐股。
2 安裝和配置
如果使用vundle安裝indentLine,只需要在Vim配置文件 ~/.vimrc 中增加如下內(nèi)容
Plugin 'Yggdroot/indentLine'
并使用 :PluginInstall
進(jìn)行安裝即可耻卡。
3 使用
在Vim命令行模式下可以使用 :IndentLinesToggle
命令打開(kāi)或者關(guān)閉顯示縮進(jìn)指示線疯汁。
默認(rèn)情況下,當(dāng)有二級(jí)縮進(jìn)的時(shí)候卵酪,就會(huì)顯示縮進(jìn)標(biāo)識(shí)了幌蚊,默認(rèn)的縮進(jìn)標(biāo)識(shí)是 |
- 定制縮進(jìn)標(biāo)識(shí)
可以在 .vimrc
中使用下面的配置設(shè)置自定義的縮進(jìn)標(biāo)識(shí)
let g:indentLine_char='??'
提示:顯然這些縮進(jìn)標(biāo)識(shí)都不會(huì)真正的保存在你的文件中。
五溃卡、 代碼自動(dòng)格式化插件 autopep8
vim-autopep8是一個(gè)將Python源代碼自動(dòng)格式化為滿足PEP8規(guī)范的Vim插件溢豆。
安裝后在 Vim 普通模式下執(zhí)行 :Autopep8
命令就可以按照 PEP8 標(biāo)準(zhǔn)規(guī)范自動(dòng)格式化 Python 源代碼
- 插件安裝和配置
vim-autopep8插件依賴于Python工具autopep8,所以在使用vim-autopep8插件前必須先安裝autopep8瘸羡。
pip3 install --upgrade autopep8
接著在 .vimrc
中配置并安裝
Plugin 'tell-k/vim-autopep8'
:PluginInstall
2 使用
在 vim 中格式化代碼
:Autopep8
指定行范圍進(jìn)行格式化
:Autopep8 --range 1 5
自定義快捷鍵, 按下 F8
進(jìn)行格式化代碼
autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR>
六 語(yǔ)法檢測(cè)插件vim-flake8
vim-flake8 是一款在 Vim 內(nèi)集成 flake8 (由 Python 官方發(fā)布的一款輔助檢測(cè) Python 代碼是否規(guī)范的工具漩仙,整合了 PyFlakes 和 PEP 8 兩個(gè)代碼檢查軟件的功能) 的代碼檢測(cè)功能的 Vim 插件,可用于對(duì) Vim 打開(kāi)的當(dāng)前 Python 代碼進(jìn)行靜態(tài)的語(yǔ)法檢查和格式檢測(cè)犹赖。該插件依賴 flake8 (Python官方發(fā)布的一款輔助檢測(cè) Python 代碼是否規(guī)范和正確的工具) 工具队他,可通過(guò) pip3 install flake8
命令進(jìn)行安裝。
1 插件安裝和配置
在 Vim 配置文件 ~/.vimrc
中增加 Plugin 'nvie/vim-flake8'
并使用 :PluginInstall
進(jìn)行安裝即可峻村。
2 使用 F7
鍵
或者執(zhí)行 flake8 /path/to/file.py
若果希望在每次保存文件的時(shí)候執(zhí)行檢查麸折,可以在 ~/.vimrc
中配置如下內(nèi)容
autocmd BufWritePost *.py call flake8#Flake8()
七、括號(hào)/引號(hào)自動(dòng)補(bǔ)齊插件 auto-pairs
使用 auto-pairs 插件粘昨,可以在 Vim 插入模式下垢啼,輸入左大括號(hào)后自動(dòng)補(bǔ)全右大括號(hào)窜锯;在一對(duì)括號(hào)之間按回車鍵,將自動(dòng)分為 3 行并調(diào)整縮進(jìn)和光標(biāo)位置芭析。
1 插件安裝和配置
在 Vim 配置文件 ~/.vimrc 的合適位置添加 Plugin 'jiangmiao/auto-pairs'
后再在 Vim 的命令行模式下執(zhí)行 :PluginInstall
命令即可完成插件的安裝衬浑。
2 使用
Insert in pair
input: [
output: [|]
八、多括號(hào)顯示不同顏色的插件 rainbow_parenthsis
使用 Vim 編寫 Python 代碼時(shí)經(jīng)常會(huì)出現(xiàn)一行代碼中有多重括號(hào)嵌套的場(chǎng)景放刨,這使得閱讀和分析這種連續(xù)嵌套的多重括號(hào)變得較為困難工秩。
rainbow_parenthsis 是一個(gè)對(duì)不同層次的括號(hào) (包括()、[]进统、{}助币、<>) 使用不同彩色進(jìn)行高亮匹配顯示的 Vim 插件,雖然功能較為簡(jiǎn)單螟碎,但是卻十分實(shí)用眉菱。
1 安裝和配置
在 ~/.vimrc
中添加 Plug 'kien/rainbow_parentheses.vim'
后執(zhí)行 :PlugInstall
命令進(jìn)行安裝
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 插件可以實(shí)現(xiàn)快速注釋連續(xù)的多行代碼俭缓,也可以注釋掉從當(dāng)前光標(biāo)所在位置到行尾的剩下內(nèi)容,還可以注釋掉從當(dāng)前光標(biāo)所在位置到行尾的剩下內(nèi)容酥郭。在 ~/.vimrc 文件中添加設(shè)置
map <F4> <leader>ci <CR>
可以實(shí)現(xiàn)按 F4 鍵快速注釋和反注釋當(dāng)前行华坦。
nerdcommenter 插件,需要打開(kāi) Vim 加載文件類型插件的功能
請(qǐng)保證在 ~/.vimrc
文件中正確添加了如下配置項(xiàng)
set filetype plugin indent on
1 安裝和配置
Vim 的配置文件中添加 Plugin 'preservim/nerdcommenter'
不从,再通過(guò)在 Vim 的命令行模式下執(zhí)行 :BundleInstall 命令完成插件的安裝惜姐。
2 使用
以下操作需要在 vim 的默認(rèn)模式下執(zhí)行
默認(rèn)模式就是 按下 Esc
鍵后的模式
注釋光標(biāo)所在行
\cc
注釋向下連續(xù) 3 行,從光標(biāo)所在行開(kāi)始椿息,也就是總共注釋 3 行
3\cc
取消光標(biāo)所在行的注釋
\cu
取消向下連續(xù) 3 行的注釋歹袁,從光標(biāo)所在行開(kāi)始,總共取消注釋 3 行
3\cu
切換行的注釋狀態(tài) 寝优,就是注釋了条舔,就取消注釋,沒(méi)有注釋乏矾,就添加注釋??????
\ci
當(dāng)前行
3\ci
3 行
是不是感覺(jué)被騙了??孟抗,這個(gè)才是終極辦法啊。
注釋掉從當(dāng)前光標(biāo)所在位置到行尾的剩下內(nèi)容 ????
\c$
在行尾添加注釋妻熊,并進(jìn)入 vim 的編輯模式 ????
\cA
完整的 .vimrc
syntax on " 語(yǔ)法高亮
set nocompatible " 必須
set backspace=indent,eol,start " 使用退格鍵刪除光標(biāo)前面的字符
filetype off " 關(guān)閉自動(dòng)文件類型檢查夸浅,必須
" 設(shè)置運(yùn)行時(shí)包含 Vundle 的路徑和 初始化,必須
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin() " 開(kāi)始調(diào)用 Vundle 進(jìn)行插件的管理
" 首先必須加載 Vundle 插件
Plugin 'VundleVim/Vundle.vim'
" 在下面編寫自己需要用的的插件
"""""""""""""""""""""""""""""""
" Python 代碼自動(dòng)補(bǔ)全提示
Plugin 'davidhalter/jedi-vim'
" 縮進(jìn)標(biāo)識(shí)
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'
" 自動(dòng)括號(hào)匹配
Plugin 'jiangmiao/auto-pairs'
" 不同括號(hào)顯示不同顏色
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'],
\ ]
" 最多多少個(gè)
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
" 打開(kāi)Vim后自動(dòng)啟用rainbow_parenthsis插件
au VimEnter * RainbowParenthesesToggle
" 同時(shí)開(kāi)啟對(duì)以下 3 種擴(kuò)號(hào)的多彩色高亮顯示
au Syntax * RainbowParenthesesLoadRound " ()
au Syntax * RainbowParenthesesLoadSquare " []
au Syntax * RainbowParenthesesLoadBraces " {}
" 快速注釋
Plugin 'preservim/nerdcommenter'
" 所有要使用的插件扔役,必須在下面一行之前
call vundle#end() " 必須的
filetype plugin indent on " 打開(kāi)文件類型檢查帆喇,必須的
" 下面是幫助信息
" :PluginList - 列出已經(jīng)安裝且配置好的插件
" :PluginInstall - 安裝插件
" :PluginUpdate - 更新現(xiàn)有的插件
" :PluginClean - 清空沒(méi)有在 .vimrc 文件中配置的插件
""""""""""""""""""""""""""""""""""""
" 把你的非插件的其他設(shè)置放在這行后面
" 保存 .vimrc 文件后,配置立刻生效
autocmd! bufwritepost $HOME/.vimrc source %
" 打開(kāi)語(yǔ)法高亮
syntax on
" 開(kāi)啟自動(dòng)匹配
set showmatch
"設(shè)置按下 Tab 鍵亿胸,實(shí)際輸入的是空格
set expandtab
"設(shè)置 expandtab 后坯钦,設(shè)置一下按一次 Tab 鍵輸入 4 個(gè)空格
set tabstop=4
"set smartindent
"自動(dòng)縮進(jìn)時(shí)候预皇,縮進(jìn) 4 個(gè)空格
set shiftwidth=4
"總是顯示狀態(tài)欄
set laststatus=2
"顯示光標(biāo)當(dāng)前位置
set ruler
"表示如果當(dāng)前文件在 Vim 外被修改且未在 Vim 里面重新載入的話,則自動(dòng)重新讀取婉刀。
set autoread
"設(shè)置 Vim 窗口標(biāo)題吟温。
set title
"關(guān)閉錯(cuò)誤提示的響鈴
set noerrorbells
"設(shè)置新建文件時(shí)候,自動(dòng)向文件中添加內(nèi)容
autocmd BufNewFile *.sh,*.py exec ":call AutoSetFileHead()"
function! AutoSetFileHead()
"對(duì)于 .sh 文件 "
if &filetype == 'sh'
call setline(1, "#!/bin/bash")
endif
"對(duì)于 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)突颊, 博主是個(gè)萌妹子??鲁豪,一般人兒我不告訴他。在此表示感謝律秃!??