如何利用Vim配置Python IDE:全面指南与实用技巧分享

本文由编程学校 EarlGrey 翻译。原文来自realpython。是 Vim 爱好者专门为了使用 Sublime Text 3 设置 Python IDE 而写的,译者本人也根据 Sublime Text 文章配置了开发环境,不过一直很佩服 Vim 神器的美誉,在看到如此全面的配置后文章,他觉得有必要翻译一下,分享给大家,我觉得可以保存一下。自己花了很多时间研究如何配置。

如何利用Vim配置Python IDE:全面指南与实用技巧分享

翻译链接:

个人网站刚刚上线。欢迎大家参观并提出宝贵意见。

我注意到realpython.com上有人在宣传Sublime Text 3。作为公司的一名高级开发人员(嗯,就是老古董了),我觉得有义务向大家介绍一个真正的Python开发环境——当然是我的那个。要推荐的是Vim。是的,Vim 编辑器无处不在,速度很快,而且永远不会崩溃。而且,它可以做任何事情!

不过,也有缺点,就是Vim配置起来很头疼。不过不用担心,本文将告诉你日常如何配置一个强大的专门用于Python开发的Vim环境。

下面是最终结果的预览。

Vim 作为 Python IDE

为了充分利用本文,您至少应该对如何使用 Vim 及其命令模式有基本的了解。如果您是初学者,可以通过 vim-adventure 或 openvim 网站进行学习。在继续阅读本文之前,请花点时间浏览一下这两个网站的内容。

安装

因为很多Unix衍生系统都预装了Vim,所以我们首先需要确认编辑器是否安装成功:

vim --version

如果已安装,您应该会看到类似以下内容的文本:

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov  5 2014 21:00:28)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
-conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con +diff +digraphs
-dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path
+find_in_path +float +folding -footer +fork() -gettext -hangul_input +iconv
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent
+listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape
-mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm -mouse_sysmouse
+mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype
+path_extra -perl +persistent_undo +postscript +printer -profile +python/dyn
-python3 +quickfix +reltime -rightleft +ruby/dyn +scrollbind +signs
+smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
 -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo
+vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
 -xterm_clipboard -xterm_save
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -D_FORTIFY_SOURCE=0 -Iproto -DHAVE_CONFIG_H -arch i386 -arch x86_64 -g -Os -pipe
Linking: gcc -arch i386 -arch x86_64 -o vim -lncurses

在此步骤中,您需要确保满足以下两个要求:

Vim 编辑版本应大于 7.3。支持Python语言。在您选择的编辑器的功能中,确保您看到+python。

如果满足上述要求,那么接下来就可以安装了。如果没有,您需要安装/升级。

操作系统

如果您没有 Homebrew,建议立即安装并运行:

brew update
brew install vim

Unix衍生品

对于Debian或Ubuntu系统,可以使用以下代码:

sudo apt-get remove vim-tiny
apt-get update
apt-get install vim

如果是其他版本的Linux系统,请查阅相应版本包管理器的文档。如果不确定,可以先阅读这篇文章:安装Vim

视窗

在 Windows 系统上安装 Vim 有多种方法。请检查。

验证安装

确保您已安装支持 Python 的 Vim 编辑器版本 7.3 或更高版本。您可以再次运行 vim --version 进行确认。如果你想知道 Vim 中使用的 Python 版本,可以在编辑器中运行: python import sys;打印(系统版本)。

2.7.6 (default, Sep  9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]

这行命令将输出编辑器的当前 Python 版本。如果报错,那么你的编辑器不支持Python语言,需要重新安装或者重新编译。

Vim编辑器安装完毕后,我们来看看如何将其设置为Python开发的强大环境。

Vim 扩展

Vim 本身可以满足开发者的很多需求,但它的可扩展性也极强,已经有一些杀手级扩展可以赋予 Vim “现代”集成开发环境的特性。因此,您首先需要的是一个好的扩展管理器。

Vim 扩展通常称为捆绑包或 .

文德尔

Vim 有多个扩展管理器,但我们强烈推荐 Vundle。你可以把它想象成 Vim 的 pip。使用 Vundle,安装和更新软件包变得毫不费力。

现在让我们安装 Vundle:

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

此命令将下载 Vundle 插件管理器并将其放置在您的 Vim 编辑器包文件夹中。现在,您可以通过 .vimrc 配置文件管理所有扩展。

将配置文件添加到用户的主文件夹中:

touch ~/.vimrc

接下来,将以下 Vundle 配置添加到配置文件的顶部:

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

这样,您就完成了使用Vundle之前的设置。之后,您可以在配置文件中添加要安装的插件,然后打开Vim编辑器并运行以下命令:

:PluginInstall

此命令告诉 Vundle 发挥其魔力 ​​- 自动下载所有插件并为您安装和更新它们。

vim插件安装镜像

对于 Windows 用户,请参阅 Windows 安装指南。

开始构建 IDE

本文不可能列出 Vim 的所有功能。我只能快速介绍一下Vim自带的一些强大的功能,这些功能对于Python开发来说非常有用。

把鼠标扔掉

也许 Vim 编辑器最重要的功能是它不需要使用鼠标(GUI 版本除外)。起初,您可能认为这是一个糟糕的主意,但是一旦您投入时间(是的,这需要时间)来学习快捷键组合,您就可以显着加快工作流程。

分割布局

vim的分割布局

使用:sv命令打开文件,可以垂直分割布局(新文件会在当前文件下方的界面中打开)。使用相反的命令:vs,可以得到水平分割的布局(新文件将在当前文件右侧的界面中打开)。 。

您还可以嵌套拆分布局,以便您可以再次垂直或水平拆分布局内容,直到您满意为止。众所周知,我们开发的时候,经常需要同时查看多个文件。

专业提示:请记住在输入 :sv 后使用制表符补全功能来快速查找文件。

专业提示:您还可以通过将以下代码添加到 .vimrc 文件来指定可以拆分为布局的屏幕区域:

set splitbelow
set splitright

专业提示:想要在不使用鼠标的情况下在拆分布局之间切换吗?只需将以下代码添加到.vimrc文件中,就可以通过快捷键组合进行切换。

"split navigations
nnoremap  
nnoremap  
nnoremap  
nnoremap  

组合快捷键:

换句话说,按下 Ctrl+Vim 的标准移动键即可切换到指定窗口。

等等,nnoremap 是什么意思? ——简单来说,nnoremap将一个快捷键组合映射到另一个快捷键。开头的 n 指的是在 Vim 的普通模式(Normal Mode)下重新映射,而不是可视模式。基本上,nnoremap 是说,当我在正常模式下按下时,执行该操作。请参阅此处了解更多信息。

缓冲器

尽管Vim支持制表符操作,但许多人仍然更喜欢缓冲区和分割布局。您可以将缓冲区视为最近打开的文件。 Vim 提供了一种访问最近缓冲区的便捷方法。只需输入:b即可切换到已经打开的缓冲区(这里也可以使用自动完成功能)。您还可以通过 ls 命令查看所有缓冲区。

专业提示:在 :ls 命令输出结束时,Vim 会提示“按 Enter 继续查看”。这时可以直接输入:b立即选择缓冲区。这样就省去了按键操作,而且不需要记住缓冲区的名称。

代码折叠

大多数“现代”集成开发环境(IDE)提供了一种折叠方法或类的方法,仅显示类或方法的定义而不是整个代码。

您可以将以下代码添加到 .vimrc 中来启用此功能:

" Enable folding
set foldmethod=indent
set foldlevel=99

这可行,但您必须手动输入 za 才能折叠(和取消折叠)。使用空格键将是更好的选择。因此,将这行命令添加到您的配置文件中:

" Enable folding with the spacebar
nnoremap  za

现在您可以轻松隐藏工作时不需要关注的代码。

第一个命令 set Foldmethod=ident 将启用基于每行缩进的折叠。但这样做会导致折叠次数超出您的预期。但不要害怕,有几个扩展是专门为解决这个问题而设计的。在这里,我们推荐SimplyFold。将以下行代码添加到 .vimrc 中并通过 Vundle 安装:

Plugin 'tmhedberg/SimpylFold'

不要忘记执行安装命令::PluginInstall

专业提示:想要查看折叠代码的文档字符串吗?

let g:SimpylFold_docstring_preview=1

Python代码缩进

当然,如果您希望代码折叠基于缩进正常工作,您将希望缩进正确。这里,Vim的内置函数无法满足要求,因为它无法实现定义函数后自动缩进。我们希望 Vim 中的缩进可以做以下两件事:

PEP8

要支持 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

这些设置将使Vim中的Tab键相当于4个标准空格字符,确保每行代码的长度不超过80个字符,并将文件保存为unix格式,以避免推送到Github或与其他人共享时出错用户。文件转换问题。

此外,对于全栈开发,您可以为每种文件类型设置 au 命令:

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

自动缩进

自动缩进很有用,但在某些情况下(例如当函数定义有多行时),它并不总能达到您想要的效果,尤其是在遵守 PEP8 标准时。我们可以使用indentpython.vim插件来解决这个问题:

Plugin 'vim-scripts/indentpython.vim'

标记不必要的空白字符

我们希望避免额外的空白字符。我们可以让Vim帮我们标记一下,这样就可以很容易地找到并删除它。

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

这将突出显示额外的空白字符,很可能将它们变成红色突出显示。

支持UTF-8编码

大多数情况下,在 Python 中开发时应该使用 UTF-8 编码,尤其是在使用 Python 3 时。确保 Vim 设置文件具有以下命令:

set encoding=utf-8

自动完成

支持Python自动完成的最好的插件是YouCompleteMe。我们再次使用 Vundle 安装:

Bundle 'Valloric/YouCompleteMe'

YouCompleteMe插件实际上在底层使用了一些不同的自动完成组件(包括为Python开发的Jedi),并且需要安装一些C库才能正常工作。该插件的官方文档提供了很好的信息,这里不再重复。请记住按照文档中的步骤进行安装。

安装完成后,插件自带的设置工作得很好,但我们也可以做一些小的调整:

let g:ycm_autoclose_preview_window_after_completion=1
map g  :YcmCompleter GoToDefinitionElseDeclaration

上面的第一行确保自动完成窗口在完成后不会消失,第二行定义“转到定义”快捷方式。

支持Virtualenv虚拟环境

上面“转到定义”功能的一个问题是,默认情况下 Vim 不知道 virtualenv 虚拟环境的状态,因此您必须将以下代码添加到配置文件中,以便 Vim 和 YouCompleteMe 可以发现您的虚拟环境:

"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

这段代码会判断你当前是否在虚拟环境中编辑,然后切换到相应的虚拟环境,并设置你的系统路径,以确保YouCompleteMe能够找到相应的站点包文件夹。

语法检查/突出显示

通过安装 syntastic 插件,Vim 将在每次保存文件时检查代码的语法:

Plugin 'scrooloose/syntastic'

您还可以通过这个小插件添加 PEP8 代码风格检查:

Plugin 'nvie/vim-flake8'

最后,让你的代码更漂亮:

let python_highlight_all=1
syntax on

配色方案

配色方案可以与您正在使用的基色方案一起使用。您可以在 GUI 模式下尝试 Solarized 解决方案,也可以在终端模式下尝试 Zenburn 解决方案:

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

接下来,您只需要添加一点逻辑来确定在哪种模式下使用哪种解决方案:

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

Solarized 解决方案提供深色和浅色主题。要支持切换主题(按F5)也很简单,只需添加:

call togglebg#map("")

文件浏览

如果你想要一个漂亮的文件树结构,NERDTree是最好的选择。

Plugin 'scrooloose/nerdtree'

如果你想使用 tab 键,可以使用 vim-nerdtree-tabs 插件:

Plugin 'jistr/vim-nerdtree-tabs'

仍想隐藏 .pyc 文件吗?然后添加以下代码行:

let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree

超级搜索

想要在 Vim 中搜索任何文件吗?尝试 ctrlP 插件:

Plugin 'kien/ctrlp.vim'

就像插件名称一样,您可以通过按 Ctrl+P 进行搜索。如果您的搜索词与您要查找的文件匹配,该插件将为您找到它。哦,没错 - 它不仅搜索文件,还检索标签!欲了解更多信息,您可以观看此 YouTube 视频。

显示行号

打开行号显示:

set nu

Git 集成

想要在 Vim 中执行基本的 Git 命令吗? vim-fugitive 插件是最好的选择。

Plugin 'tpope/vim-fugitive'

vim 中的 git 集成

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读