Vim配置Python3开发环境

检查 Vim 是否支持 Python3

vim --version

输出包含 +python3表示支持,-python3则不支持

Vim 设置

编辑~/.vimrc,没有则新建

set nocompatible "关闭与vi的兼容模式
set number  "显示绝对行号
set rnu  "显示相对行号
set nowrap    "不自动折行
set showmatch    "显示匹配的括号
set scrolloff=3        "距离顶部和底部3行
set encoding=utf-8  "通用的 utf8 编码,避免乱码
set fenc=utf-8      "编码
set mouse=a        "启用鼠标
set hlsearch        "搜索高亮
set cc=80 "标尺线

set foldmethod=indent  " 代码折叠
set foldcolumn=0            "设置折叠区域的宽度
setlocal foldlevel=1        "设置折叠层数为
set foldlevelstart=99       "打开文件是默认不折叠代码
noremap <space> za  "设置快捷键为空格

syntax on    "语法高亮
filetype plugin indent on  "开启自动识别文件类型,并根据文件类型加载不同的插件和缩进规则
set clipboard=unnamed  "yy直接复制到系统剪切板(For macvim)
cmap w!! w !sudo tee >/dev/null %  "w!!写入只读文件

nnoremap <C-j> 4j  "ctr + j 每次移动4行
nnoremap <C-k> 4k
" vim 关联的 python3 路径, 可以是虚拟环境
let g:python3_host_prog = '/usr/bin/python3'

注意:python3_host_prog要根据which python3修改为自己的路径

安装插件管理器

手动安装

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

自动安装
本文使用此方法,在配置文件中加一个判断,如果没有插件管理器,Vim 会自动下载。
一定要写在plug#begin()之前

if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

安装插件

配色主题:gruvbox

Plug 'morhetz/gruvbox'

设置

colorscheme gruvbox

自动补全:deoplete + deoplete-jedi

Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
Plug 'deoplete-plugins/deoplete-jedi'

deoplete 是一款自动补全的引擎,具体对某种编程语言的自动补全支持,要安装对应的source 才能真正工作。deoplete-jedi 是 Python 的 Source,需要补全其它语言在这里查找相应的资源。

插件设置:

" 自启动
let g:deoplete#enable_at_startup = 1

" 自动补全提示默认 ctrl-n 下翻页,改成 tab
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"

" 自动补全提示默认 ctrl-p 下翻页,改成 s-tab
inoremap <expr><S-tab> pumvisible() ? "\<c-p>" : "\<tab>"

" 函数方法 Preview 的窗口自动关闭
autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif

" Preview 窗口设为在当前窗口下面打开
set splitbelow

deoplete-jedi 默认配置就很好了

代码高亮:semshi

Plug 'numirias/semshi', {'do': ':UpdateRemotePlugins'}

自动缩进:indentpython

Plug 'vim-scripts/indentpython.vim'

自动补全括号:auto-pairs

Plug 'jiangmiao/auto-pairs' " 自动补全括号和引号等

状态栏:vim-airline

Plug 'vim-airline/vim-airline' " 状态栏

vim-airline提供了很多主题来个性化状态栏,不同主题的样子可以参见这里。更改vim-airline 主题方式很简单,首先安装插件vim-airlinetheme:

Plug 'vim-airline/vim-airline-themes'

然后在 Nvim 配置文件中,加入以下设置:

let g:airline_theme='<theme>' " <theme> 代表某个主题的名称

注释插件:nerdcommenter

Plug 'scrooloose/nerdcommenter'

插件设置:

" 注释符后面自动添加空格
let g:NERDSpaceDelims = 1

" 取消注释后删除注释符后的空格
let g:NERDTrimTrailingWhitespace = 1

" 启用NERDCommenterToggle以检查所有选定的行是否已注释
let g:NERDToggleCheckAllLines = 1

" 允许注释和倒空行(在注释区域时很有用)
let g:NERDCommentEmptyLines = 1

代码检查工具:Ale

Plug 'dense-analysis/ale'

插件设置:

let g:ale_sign_error = '>>'  " 自定义错误标志
let g:ale_sign_warning = '!'  " 自定义警告标志
" 指定修复 pep8 错误的 fixer
let g:ale_fixers = {'python': ['remove_trailing_lines', 'trim_whitespace', 'autopep8']}
nnoremap <C-S-l> :ALEFix<CR>  "修复语法和格式错误 ctr + shift + l"

文件树:nerdtree

Plug 'scrooloose/nerdtree'

设置

" =====nerdtree 设置
map <C-n> :NERDTreeToggle /home/ubuntu<CR>  " ctrl+n 默认打开的路径,若文件夹不存在则忽略
let g:NERDTreeHidden=0 "不显示隐藏文件

显示 Git 变更状态:nerdtree-git-plugin

Plug 'Xuyuanp/nerdtree-git-plugin'

 上一篇
hexo 博客的备份和迁移 hexo 博客的备份和迁移
原理我们的博客是托管到 GitHub 上的. 而我们每次上传(hexo d)的是网页文件, 不是我们的文章, 所以我们如果想上传文章, 但同时不会干扰到网页部署, 就在 GitHub 的博客仓库上建立一个分支 hexo, 这个 hexo 分
2020-06-10
下一篇 
在树莓派上搭建 Time Machine 在树莓派上搭建 Time Machine
硬件 树莓派 2B (Raspbian) 硬盘盒 (需要带电源,树莓派供电不足 ) 硬盘 路由器(我的小米4A) 备份速度:2M/s,有速度要求的请更换强力配件或者其它方法 1. 准备硬盘 通过lsblk查看新硬盘盘符,使用cfdisk命
2019-11-12
  目录