代码之家  ›  专栏  ›  技术社区  ›  Stan

在Emacs Viper模式中插入空格而不是制表符

  •  3
  • Stan  · 技术社区  · 17 年前

    我是VIM的长期用户,最近发现Emacs有毒蛇模式,提供了两个世界中最好的(至少对我来说)。然而,有一件事真的让我困扰,因为我主要是用Python编写代码,将标签和空间混合在一起是一件大事。

    当处于插入模式时,我希望在按Tab键时插入viper shift width spaces而不是tab。我该怎么做?我认为解决方案是一些简单的lisp函数/设置。

    我在毒蛇模式设置中找不到任何可以做到这一点的设置。

    编辑:

    我有 (setq-default indent-tabs-mode nil) 在我的.emacs中,但当我在viper模式中处于插入模式(在插入模式的vim meaing中)时,这不起作用。

    2 回复  |  直到 17 年前
        1
  •  6
  •   Trey Jackson    17 年前

    首先,您应该确保 'indent-tabs-mode 是 nil ,像这样:

    (setq-default indent-tabs-mode nil)
    

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

    所以…您可以将专家级别提高到3级或更高:

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

    如果您确实希望级别1或2,但希望选项卡不是自动插入命令,请将其添加到.viper文件中:

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

    这对我也有好处,即使是在一级。

        2
  •  0
  •   lumpynose    17 年前

    缩进标签模式?

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

    在你进入毒蛇模式后,试着做M-X定位,然后搜索空间或标签或缩进。