欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用VIM打造Python专属IDE

程序员文章站 2022-05-26 14:40:02
...

先看代码后BiBi

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

Plugin 'scrooloose/nerdtree'

Plugin 'scrooloose/nerdcommenter'

Plugin 'Valloric/YouCompleteMe'

Plugin 'vim-airline/vim-airline'

Plugin 'tomasr/molokai'

Plugin 'nvie/vim-flake8'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal

" Put your non-Plugin stuff after this line

colorscheme molokai
set encoding=utf-8
set nu
set mouse=a
syntax on

" NERDTree
autocmd vimenter * NERDTree " 自动开启NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " 如果仅存在NERDTree窗口,那么关闭vim

" NERDCommenter
let g:NERDSpaceDelims=1 " 于注释符后添加一个空格
let g:NERDDefaultAlign='left' " 注释符左对齐
let g:NERDCommentEmptyLines=1 " 允许注释空行
let g:NERDTrimTrailingWhitespace=1 " 去掉注释时,去掉多余空格
let g:NERDToggleCheckAllLines=1 " 注释时检查所选行是否已被注释
" 注释或反注释快捷键F4
map <F4> <Leader>ci

" 窗口按键映射
nnoremap <C-H> <C-W><C-H>
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>

" 括号自动补齐
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap ' ''<ESC>i
inoremap " ""<ESC>i

" 自动代码折叠
set foldmethod=indent
nnoremap <Space> za

func AddTitlePY()
    call append(0,"# -*- coding=utf8 -*-")
    call append(1,"")
    call append(2,"# Author       : XXX")
    call append(3,"# Created Time : ".strftime("%c"))
    call append(4,"# Filename     : ".expand("%:t"))
    call append(5,"# Email        : [email protected]")
    call append(6,"")
    call append(7,"")
endfunc

func AddTitleC()
    call append(0,"/*=======================================")
    call append(1," *")
    call append(2," * Author       : XXX")
    call append(3," * Created Time : ".strftime("%c"))
    call append(4," * Filename     : ".expand("%:t"))
    call append(5," * Email        : XXX@XXX.com")
    call append(6," *")
    call append(7," *=======================================*/")
    call append(8,"")
    call append(9,"")
endfunc

" Python C C++
highlight BadWhitespace ctermbg=red guibg=darkred
au BufNewFile,BufRead *.py,*.pyw,*.c,*.cpp,*.h
	\ set tabstop=4 |
	\ set softtabstop=4 |
	\ set shiftwidth=4 |
	\ set expandtab |
	\ set autoindent |
	\ set fileformat=unix |
	\ match BadWhitespace /\s\+$/

au BufNewFile,BufRead *.c,*.cpp,*.h set cindent

au BufNewFile *.py,*.pyw call AddTitlePY()

au BufNewFile *.c,*.cpp,*.h call AddTitleC()

1 Vundle https://github.com/VundleVim/Vundle.vim

Vundle是插件也是插件管理器。我们将使用Vundle来安装和管理我们所需要的插件。

首先需要安装git,然后使用如下命令clone Vundle:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Vundle的Github上有详细地介绍,这儿不再累述。

要安装插件在vim中使用命令:

:PluginInstall

或者指定安装某个插件:

:PluginInstall 'VundleVim/Vundle.vim'

若要删除插件,则在配置文件中删除该插件的相关代码,然后执行:

:PluginClean

2 YouCompleteMe https://github.com/Valloric/YouCompleteMe

这个插件有个浪漫的名字,用于代码补全。但是,相比其他插件,它是最不好装的插件。安装该插件需要先安装cmake。
按照YouCompleteMe的Github上的步骤,用Vundle install好该插件后,进入插件所在路径,执行命令:
若需要支持C、C++等语言的补全,使用如下命令:

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

若不需要支持C、C++等语言的补全。如果只是编辑Python的话,选择这个命令:

cd ~/.vim/bundle/YouCompleteMe
./install.py

若需要支持其他语言的补全,详细见Github。若懒得挑选,就用下面这个命令:

cd ~/.vim/bundle/YouCompleteMe
./install.py --all

很多人用Vundle install好YouCompleteMe之后,会看到报错:

ycmd server SHUT DOWN

就是因为没有执行以上./install.py

3 NERDTree https://github.com/scrooloose/nerdtree

不管打开那个相关博文,几乎都会推荐前三个插件。第三个插件NERDTree用于显示目录结构。

4 NERDCommenter https://github.com/scrooloose/nerdcommenter

从名字上就能发现NERDCommenter和NERDTree的作者是同一个人。该插件用于快速添加代码注释。这儿,我设置了快捷键<F4>用于给代码块快速添加注释或反注释。
NERDCommenter有很多有意思的命令,详见其Github。

5 vim-airline https://github.com/vim-airline/vim-airline

该插件用于装饰底部状态栏,使状态栏显示更丰富的内容。其Github上推荐安装vim-airline-themes,用于提供更多可选的样式。

6 molokai https://github.com/tomasr/molokai

这是主题样式molokai,包括配色等的配置,可以选择dark或者light,详见其Github。

7 vim-flake8 https://github.com/nvie/vim-flake8

该插件会更具PEP8标准对Python代码进行语法检查。语法检查的插件有很多,但是在vim-flake8的Github上,写着这样一句话“ It supersedes both vim-pyflakes and vim-pep8.”
常见的Python语法检查插件主要有vim-flake8、vim-pyflakes、vim-pep8。可以在博文https://blog.csdn.net/rainysia/article/details/46774163中看看着三者的区别。
使用vim-flake8需要先安装flake,使用pip或者conda就可以轻松安装好flake。
vim-flake8会在保存文件时检查代码语法,或者当使用快捷键<F7>时,其会检查语法。

8 窗口间移动

因为使用了NERDTree,所以自然而然产生了左右两个窗口,这时候就需要快速地在窗口之间移动。按照vim的原始方法,移到左窗口需要按键<Ctrl><w><h>,而我设置了按键映射,<ctrl><h>即可移动到左窗口。
移动到右窗口:<ctrl><l>
移动到下窗口:<ctrl><j>
移动到上窗口:<ctrl><k>

9 代码折叠

会依据代码的缩进自动折叠。Normal模式下按空格键则会取消折叠。

10 自动添加头部注释

新建.py、.pyw、.c、.cpp、.h文件时,会自动添加头部注释,包含作者、文件名、创建时间、邮箱等信息。

11 其他

  1. 缩进使用4个空格而不是tab;
  2. 使用utf8编码;
  3. 自动缩进;
  4. 语法高亮;
  5. 查找高亮;
  6. 自动检查多余空格并标示为红色等。
相关标签: vim