Windows 10 使用VIM写python的基本设置
尽可能的少安装插件,使用原生vim的功能进行python小程序的方便编写。 如果不需要自动完成括号,只需要安装一个插件:jedi-vim用于函数提示就可以了。 自动完成括号应该也可以使用vim script完成,但是,没那功夫,有功夫直接使用vscode更好。
0.预备工作¶
确保
- python 可以在CMD顺利运行
- python 是64位
Warning
安装文件是32或64位应该很重要。至少我使用32位VIM配合64位Python是不成功的。别折腾。
1. 安装VIM¶
1.1 下载VIM¶
可以使用choco安装。 另一选择是下载64位VIM,请直接去Github 界面下载最新的Nightly版本 。<-这是我下载的版本 不去官网下载 的原因是:因为windows版本不是主要维护对象,上官网直接给你推一个32和64位通用的版本,下载安装以后会遇到很多困难,出了问题并没有什么信息可以参考。
1.2 安装¶
点击安装,除了选择完全安装以外,全部都是默认设置,安装完成。安装完成,走一遍vimtutor,确保自己能在先期存活下来再干别的事。
2. 配置VIM¶
2.0 复制配置文件¶
进入VIM安装目录,把_vimrc
文件复制一份到当前用户文件夹下面。这个文件就是所有配置的基础。
2.1 更改配色¶
默认白色背景太刺眼,先上来使用一个深色的背景再进行其他操作。打开刚才的_vimrc
文件,假设已经能在VIM里自由的编辑了。在文件最后一行,空一行,输入以下语句:
desert
配色,基本上可以接受这配色再干活。需要更改后面可以设置自己喜欢的配色。
2.2 使用按键组合jk
代替ESC
退出键/映射跳出括号快捷方式方便编辑¶
ESC在左上方不是很好按,打开刚才的_vimrc
文件,在最后一行空一行,输入以下语句:
" 映射ESC键到'jk'
inoremap jk <ESC>
inoremap JK <ESC>
" 映射dd到跳出括号
inoremap DD <C-\><C-n>:call search('[>)\]}"'']', 'W')<CR>a
inoremap dd <C-\><C-n>:call search('[>)\]}"'']', 'W')<CR>a
2.3 配置python功能¶
在VIM输入 :python3 import this
,基本上可以肯定的是会得到如下图提示错误:
因为没有配置好python功能,
let &pythonthreedll='D:\miniconda3\envs\vsc\python310.dll'
let &pythonthreehome='D:\miniconda3\envs\vsc'
2.4 配置写程序基本功能¶
以下几行配置分别管理语法高亮、TAB键缩进、,请写在_vimrc
最后。
:!python t.py
验证一下功能是否正常,请把t.py换成你写的程序名。
2.5 安装插件管理器vim-plug并安装自动完成插件jedi-vim¶
下载vim-plug文件 ,放入用户文件夹的vimfiles
下的autoload
文件夹,如果没有就新建一个。
然后在_vimrc
文件最后加入如下配置
配置一下使用TAB键呼出补全
最后写一个程序试试,一切基本OK。
2.6 设置格式化/一键运行python¶
使用black自动格式化代码,如果没用,请在CMD运行pip install black
" auto-format with black
" 设置空格作为<leader>健
let mapleader=" "
map <leader>i :call Format()<CR>
func! Format()
exec "w"
if &filetype == 'python'
exec "silent !python -m black -q -v %"
endif
exec "w"
endfunc
set autoread
一键在vim内打开CMD并运行
" one key run
map <leader>e :call Runp()<CR>
func! Runp()
exec "w"
if &filetype == 'python'
exec "!python -i %"
endif
endfunc
3.最终文件¶
"选择颜色主题
colorscheme desert
set guifont=Consolas:h13:cANSI:qDRAFT
set autoread
" 映射ESC键到'jk'
inoremap jk <ESC>
inoremap JK <ESC>
" 映射dd到跳出括号
inoremap DD <C-\><C-n>:call search('[>)\]}"'']', 'W')<CR>a
inoremap dd <C-\><C-n>:call search('[>)\]}"'']', 'W')<CR>a
"python编程设置
set nu
syntax on
set tabstop=4
set expandtab
set shiftwidth=4
let &pythonthreedll='D:\miniconda3\envs\vsc\python310.dll'
let &pythonthreehome='D:\miniconda3\envs\vsc'
" jede自动补全呼出
let g:jedi#completions_command = "<TAB>"
call plug#begin()
Plug 'davidhalter/jedi-vim'
Plug 'jiangmiao/auto-pairs'
"Plug 'ervandew/supertab'
"Plug 'iamcco/markdown-preview.vim'
"Plug 'vim-airline/vim-airline'
call plug#end()
let g:AutoPairsMapBS = 0
" 自动格式化并保存
let mapleader=" "
map <leader>i :call Format()<CR>
func! Format()
exec "w"
if &filetype == 'python'
exec "silent !python -m black -q -v %"
endif
exec "w"
endfunc
" 运行程序快捷方式
map <leader>e :call Runp()<CR>
func! Runp()
exec "w"
if &filetype == 'python'
exec "!ipython -i %"
endif
endfunc