被spacemacs的tab缩进折腾得精疲力尽

我只是想让spacemacs在evil模式的时候,insert 时,可以按tab缩进,然后删除的时候可以一次删除一个tab的缩进,像vim、sublime text那样。

搜了坛里的帖子: /t/spacemacs-tab/478 像这个

做了如下设置:

  (setq-default indent-tabs-mode nil)
  (setq-default default-tab-width 2)
  (setq-default tab-always-indent nil)

现在的效果是,我在 insert mode 下,第一次缩进要按两次tab,然后才能继续缩进

删除缩进也只能一个一个空格删除

难道没有优雅的办法达到想要的效果吗? :sob:

emacs 的缩进规则有点复杂,不同的 major-mode 处理方式都不一样,并没有 vim 那样统一的方案,这确实是一个蛋疼的地方。

目前我使用的是 hungry-delete-mode 来一次性删除一大段空白,包括你说的 tab,可以试试,这个 spacemacs 也带了的。

你可以尝试一下我之前在论坛弄的一个设置:

声明: 我目前没有使用这些设置,我尽量还是让自己去适应 Emacs 的生态。

tab这样的黄金键位肯定要用来给补全之类的啊,缩进我设的其他的键,只有在偶尔缩进错乱或者用乱七八糟的模板语言,没有合适的major-mode比较好地自动缩进的时候用。
你这里tab-width设的2,那4格肯定要按两下啊。。改成4就好了,或者缩进是2格要一键插入四格的话可以绑定为(insert "____")(下划线改为空格)

原生emacs,一直就两个设置,没遇过问题。

    (setq-default tab-width 4)
    (setq-default indent-tabs-mode nil)

@ispinfx @JJPandari @guanghui.qu 谢谢回复,我再试试。

我的配置:

(... "TAB" 'yas-expand)                ;; 光标前有字符就展开,没有就缩进
(... "M-i" 'tab-to-tab-stop)           ;; 强制插入 tab-width 个字符,不受缩进约束
(... "C-h" 'delete-backward-char)      ;; 删除一个字符,代替 delete 键
(... "C-w" 'evil-delete-backward-word) ;; 删除一个词或光标前所有空格(跟 shell 一致) 

一键删除 tab-with 个空格也是可以的,不过我已经习惯了全部删除然后重新添加,所以退格键保留删除一个字符不变。

多谢,我也来试试。