2009-07-07 76 views
3

我很长时间使用vim用户,最近发现emacs有viper模式,提供了两个世界中最好的(至少对我而言)。然而,有一件事真的让我感到困扰,因为我主要是使用python进行编码,并且制表符和空格的混合是一件大事。在Emacs viper模式下插入空格而不是TAB

在插入模式下,当我按Tab键时,我想插入viper-shift-width空格而不是TAB。我怎样才能做到这一点?我想一些简单的lisp函数/设置是解决方案。

我没有找到任何可以做到这一点的毒蛇模式设置。

编辑:

我有我的.emacs (setq-default indent-tabs-mode nil),但是当我在插入模式(在VIM的插入模式meaing)在毒蛇模式

回答

6

首先,你应该确保'indent-tabs-mode的默认值是nil,就像这样:

(setq-default indent-tabs-mode nil) 

然后,在viper-mode,这也取决于你viper-expert-level。在1或2级,TAB似乎通过模式图viper-insert-diehard-minor-mode(当专家级别为1或2时启用)绑定到'self-insert-command。我猜它试图提供最大的vi兼容性,这意味着你牺牲了一些Emacs功能,包括使用一些非常基本的自定义设置。

所以...你可以你的专家级为3或更高:

(setq viper-expert-level 5)  ; really, why use anything less? 

如果你真的想1级或2,但希望TAB不为自插入命令,再加入这您.viper文件:

(define-key viper-insert-diehard-map (kbd "TAB") 'viper-insert-tab) 

这是否把戏对我来说,即使是在级别1

0

缩进的标签,这并不工作也许?

如果将其设置为零或取消设置,会发生什么情况?

在您进入毒蛇模式后,请尝试执行M-x apropos,然后搜索空格或制表符或缩进。

相关问题