一、源码安装 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
表示支持
二、快速执行 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
- 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 功能。
1 先决条件
vim 需要是 7.3 及其以上, Centos7的 vim 都是 7.4 的,所以应该都支持此功能。
2 安装和配置
如果使用vundle安装indentLine,只需要在Vim配置文件 ~/.vimrc 中增加如下内容
Plugin 'Yggdroot/indentLine'
并使用 :PluginInstall
进行安装即可。
3 使用
在Vim命令行模式下可以使用 :IndentLinesToggle
命令打开或者关闭显示缩进指示线。
默认情况下,当有二级缩进的时候,就会显示缩进标识了,默认的缩进标识是 ¦
- 定制缩进标识
可以在 .vimrc
中使用下面的配置设置自定义的缩进标识
let g:indentLine_char='🍉'
提示:显然这些缩进标识都不会真正的保存在你的文件中。
五、 代码自动格式化插件 autopep8
vim-autopep8是一个将Python源代码自动格式化为满足PEP8规范的Vim插件。
安装后在 Vim 普通模式下执行 :Autopep8
命令就可以按照 PEP8 标准规范自动格式化 Python 源代码
- 插件安装和配置
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 教程网, 博主是个萌妹子😍,一般人儿我不告诉他。在此表示感谢!🌹