我只是想让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,然后才能继续缩进
删除缩进也只能一个一个空格删除
难道没有优雅的办法达到想要的效果吗?
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)
我的配置:
(... "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 个空格也是可以的,不过我已经习惯了全部删除然后重新添加,所以退格键保留删除一个字符不变。