用VIM打造Python专属IDE
先看代码后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 其他
- 缩进使用4个空格而不是tab;
- 使用utf8编码;
- 自动缩进;
- 语法高亮;
- 查找高亮;
- 自动检查多余空格并标示为红色等。
推荐阅读
-
如何将vim改造为python的IDE
-
将vim打造成c++超级ide(vim插件安装)
-
Linux折腾记(六):感悟GNU C及把Vim打造成C/C++的半自动化IDE
-
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
-
用VIM写Python代码缩进问题的解决方法
-
(转)打造自己的vim界面--用winmanager合并显示NERDTree和TagList
-
(转)打造自己的vim界面--用winmanager合并显示NERDTree和TagList
-
基于MacVim打造Python IDE
-
基于MacVim打造Python IDE
-
两个命令把 Vim 打造成 Python IDE的方法