快速起步

本段落是快速完成Python Vim IDE设置的步骤,具体解释见本段落后的内容。本段落目标是尽快开始

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

以下编译安装vim,过程比较繁杂。不成功的尝试见 vim编译YouCompleteMe失败记录

从源代码编译过程参考 Building Vim from source

/usr/lib64/python3.4/config-3.4m
  • 执行vim命令,然后在命令模式下执行:PluginInstall安装插件

  • 附加屏幕分割配置

set splitbelow
set splitright

"split navigations
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
  • 使用nerdtree功能(树状结构文件浏览)
:NERDTree

上述步骤已完成vim ide for python,以下步骤不需要执行,仅供参考


vim环境检查

检查 vim 版本

vim --version

vim 版本要求> 7.3,并且支持Python(可以看到上述输出有+python

验证方法是在vim中运行命令:python import sys; print(sys.version)

可以看到输出

2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)]

vim扩展

首先需要一个好的扩展管理器

vim的扩展称为bundles或者plugins

Vundle

vim有多种扩展管理器,最推荐的是Vundle,就好像VIM的pip,安装方法如下

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

然后在自己的用户目录添加一个文件

touch ~/.vimrc

然后在这个.vimrc文件开头添加

set nocompatible              " required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)


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

然后开启vim程序,在命令中输入

:PluginInstall

可以看到Vundle自动下载安装插件

设置IDE

VIM不需要鼠标

分割页面

vim中,使用命令 :sv <filename> 则垂直分隔页面,而使用:vs <filename>则水平分隔页面。

可以通过在.vimrc文件中设置屏幕的不同分隔区域

set splitbelow
set splitright

要在不同的split分区移动而不需要鼠标,则可以在.vimrc中添加以下配置

"split navigations
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>

这样就可以使用以下快捷键来移动

Ctrl-j move to the split below
Ctrl-k move to the split above
Ctrl-l move to the split to the right
Ctrl-h move to the split to the left

nnoremap是nutshell中将一个键映射到另外一个键,例如上面的案例nnoremap <C-J> <C-W><C-J>表示将<C-J映射成<C-W><C-j>键。

缓存

缓存可以理解为最近打开的文件,vim提供了方便访问最近的缓存,只要输入:b <buffer name or number>用于切换到一个打开的缓存。可以使用:ls来列出所有缓存。

:ls输出到最后,vim提示Hit enter to continue,你可以代之以:b <buffer number>来选择列表中的缓存。

代码目录

很多现代的IDE提供一个方便的折叠方式展示方法或者类,你可以在.vimrc中添加

" Enable folding
set foldmethod=indent
set foldlevel=99

但是这会是你必须使用za来进入目录,可以添加以下配置到.vimrc这样空格键就更好使用

" Enable folding with the spacebar
nnoremap <space> za

对于初始化命令,使用 set foldmethod=indent,创建行缩进的目录,这样可以更为方便。比较好的推荐插件是SimpylFold,可以在 .vimrc 中添加

Plugin 'tmhedberg/SimpylFold'

然后再次执行 :PluginInstall 就可以安装插件

然后在.vimrc中添加

let g:SimpylFold_docstring_preview=1

Python缩排

对于Python,缩排是非常重要的,需要满足如下两点来完成缩进

  • 缩进符合PEP8标准
  • 自动处理缩进

.vimrc 中添加

au BufNewFile,BufRead *.py
    \ set tabstop=4
    \ set softtabstop=4
    \ set shiftwidth=4
    \ set textwidth=79
    \ set expandtab
    \ set autoindent
    \ set fileformat=unix

然后再添加以下内容

au BufNewFile,BufRead *.js, *.html, *.css
    \ set tabstop=2
    \ set softtabstop=2
    \ set shiftwidth=2

上述插件称为ftype,也就是让你可以针对不同的文件类型区分文件

  • 自动缩排

自动缩排对于python不是总适用,所以我们为了解决这个问题,使用 indentpython.vim扩展

Plugin 'vim-scripts/indentpython.vim'

并且我们要避免不需要的空格,素以添加

au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
  • UTF8支持

.vimrc中添加

set encoding=utf-8
  • 自动完成

一个非常好的自动完成插件 Valloric/YouCompleteMe,也就是添加

Bundle 'Valloric/YouCompleteMe'

不过,需要一些C库来避免插件自身的问题,文档介绍installation instructions

let g:ycm_autoclose_preview_window_after_completion=1
map <leader>g  :YcmCompleter GoToDefinitionElseDeclaration<CR>

此外,如果提示错误:

ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; you need to compile YCM before using it. Read the docs!

这个报错是正常的,因为ycm需要手工编译出库文件

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

支持Virtualenv

"python with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
  project_base_dir = os.environ['VIRTUAL_ENV']
  activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
  execfile(activate_this, dict(__file__=activate_this))
EOF

上述配置可以检查运行是否在virtualenv,并切换

语法检查和高亮

使用syntastic扩展

Plugin 'scrooloose/syntastic'

添加PEP8检查

Plugin 'nvie/vim-flake8'

然后再添加代码较好查看的方法

let python_highlight_all=1
syntax on

颜色

使用solarized用于GUI,以及Zenburn用于终端模式

Plugin 'jnurmine/Zenburn'
Plugin 'altercation/vim-colors-solarized'

以及检查环境来设置VIM模式

if has('gui_running')
  set background=dark
  colorscheme solarized
else
  colorscheme zenburn
endif

Solarized携带了两种theme,一种是dark,一种是light,切换非常方便,使用F5

call togglebg#map("<F5>")

文件浏览

Plugin 'scrooloose/nerdtree'

如果希望使用tabs,使用vim-nerdtree-tabs

如果需要隐藏.pyc文件,使用

超级搜索

Plugin 'kien/ctrlp.vim'

只要按下Ctrl-P就可以搜索

设置行号

set nu

集成Git

Plugin 'tpope/vim-fugitive'

Powerline

Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}

系统剪贴板

set clipboard=unnamed

在shell中使用vim

要激活,则在~/.inputrc添加

set editing-mode vi

一份完整清单vimrc realpython

参考

results matching ""

    No results matching ""