检查 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'