我非常喜欢Emacs编辑器来写Python代码,因为它有很聪明的Tab键缩进功能。例如当我有这样的代码:
def foo():
if bar:
blah
[b]eep
如果我在光标上(在beep的b上)按tab键,它不会插入一个新的制表符导致语法错误,但它将在beep可能存在的不同级别之间进行切换。有没有办法在Vim中实现这种效果?
我非常喜欢Emacs编辑器来写Python代码,因为它有很聪明的Tab键缩进功能。例如当我有这样的代码:
def foo():
if bar:
blah
[b]eep
如果我在光标上(在beep的b上)按tab键,它不会插入一个新的制表符导致语法错误,但它将在beep可能存在的不同级别之间进行切换。有没有办法在Vim中实现这种效果?
总的来说,vim是一个非常强大的正则语言编辑器(虽然宏可以扩展它,但我们现在不考虑它)。这是因为vim是基于ed的薄层,而ed不过是一个能够处理正则表达式的行编辑器。Emacs的优势在于它是建立在ELisp之上的,因此它具备轻松解析复杂语法和执行像你上面分享的缩进技巧的能力。
说实话,我从未能深入探究过emacs,因为在我的vim洞穴中冥想简直是一种享受。有了这个前提,让我们开始吧。
Janus
对于初学者,我强烈推荐安装预制的Janus插件(顺便说一下,这个名字来自一个以Janus Vim命名的星际迷航剧集)。如果你想要快速获取一个vim IDE,那么它是最划算的选择。
我自己没有经常使用它,但我看到其他人用得很开心,而我的当前设置也很大程度上借鉴了一个旧版的Janus构建。
Vim Pathogen
否则,你可以自己探索一下!如果你想看到vim插件的宇宙,我强烈推荐安装vim pathogen。
它是一种包管理器。一旦安装了它,你就可以在~/.vim/bundle
目录中使用git clone
命令克隆包,然后它们就会自动安装。不再需要插件的安装、维护或卸载麻烦了!
你可以从GitHub页面运行下面的脚本来安装pathogen:
mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -so ~/.vim/autoload/pathogen.vim \
https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim
以下是我发现并喜欢的一些扩展vim的链接:
对于那些在2013年夏天左右到达的人,我相信这个帖子有些过时了。
我遵循了这篇指南,它推荐使用Vundle而不是Pathogen。经过一天的使用,我发现安装插件很容易。
klen/python-mode插件值得特别一提。它提供了pyflakes和pylint等其他功能。
我刚开始使用Valloric/YouCompleteMe,我很喜欢它。它具有C语言自动补全功能,由于jedi集成,Python也表现出色。因此,它可能会取代jedi-vim,如此讨论 /davidhalter/jedi-vim/issues/119
最后,浏览/carlhuda/janus提供的插件是一个好的指南,可以找到一些你可能不知道的有用脚本,例如NerdTree、vim-fugitive、syntastic、powerline、ack.vim、snipmate等。
以上所有的'{}/{}'在github上都能找到,你可以通过谷歌轻松找到它们。
将以下内容放入你的.vimrc
文件中
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufRead *.py set nocindent
autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
filetype plugin indent on
另请参阅详细说明
我个人在处理复杂任务时使用JetBrain的PyCharm,并结合IdeaVIM插件,对于简单编辑,只需要添加到.vimrc
的内容就足够了。
autocmd BufRead *.py set shiftwidth=4
才能在按回车时获得4个空格的缩进。 - Harry Morenoautocmd BufRead *.py set ts=4
可以让你以 4 个空格为单位进行删除。 - Harry Morenogit clone -b vim https://github.com/sontek/dotfiles.git
cd dotfiles
./install.sh vim
截至今日,他的配置相当不错。
http://persagen.com/files/misc/Turning_vim_into_a_modern_Python_IDE.html
http://persagen.com/files/misc/Turning_vim_into_a_modern_Python_IDE.pdf
编辑(2017年9月8日)更新了URL。有一段时间前,我安装了Valloric/YouCompleteMe,我发现它真的非常棒。它可以为文件路径、函数名、方法、变量名提供自动补全......与davidhalter/jedi-vim一起,使得vim在Python编程方面表现出色(现在唯一缺少的是一个lint程序)。