Configuration 在Emacs viper模式下插入空格而不是制表符

Configuration 在Emacs viper模式下插入空格而不是制表符,configuration,emacs,elisp,spaces,viper-mode,Configuration,Emacs,Elisp,Spaces,Viper Mode,我是vim的长期用户,最近发现emacs有viper模式,提供两个世界中最好的(至少对我来说)。然而,有一件事确实让我感到困扰,因为我主要是用python编写代码,而制表符和空格的混合是一件大事 在插入模式下,我希望在按TAB键时插入viper shift宽度空格,而不是TAB。我该怎么做?我想一些简单的lisp函数/设置就是解决方案 我在毒蛇模式设置中找不到任何可以这样做的东西 编辑: 我的.emacs中有(setq默认缩进制表符模式nil),但当我处于插入模式(插入模式的vim测量)或vip

我是vim的长期用户,最近发现emacs有viper模式,提供两个世界中最好的(至少对我来说)。然而,有一件事确实让我感到困扰,因为我主要是用python编写代码,而制表符和空格的混合是一件大事

在插入模式下,我希望在按TAB键时插入viper shift宽度空格,而不是TAB。我该怎么做?我想一些简单的lisp函数/设置就是解决方案

我在毒蛇模式设置中找不到任何可以这样做的东西

编辑:


我的.emacs中有
(setq默认缩进制表符模式nil)
,但当我处于插入模式(插入模式的vim测量)或viper模式时,这可能不起作用

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


进入viper模式后,请尝试进行M-x操作,然后搜索空格、制表符或缩进。

首先,应确保缩进制表符模式的默认值为
零,如下所示:

(setq-default indent-tabs-mode nil)
然后,在
viper模式下
,它还取决于您的
viper专家级别
。在级别1或2时,
选项卡
似乎通过模式映射绑定到
“自我插入”命令
(当专家级别为1或2时启用)。我猜它是在试图提供最大的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)
这对我来说很有用,即使是在第一级