在emacs中,我希望删除删除行开头的四个空格,以便我可以轻松地取消缩进文本。我有TAB设置插入四个空格(在相关模式中),这将是有帮助的。
例如,如果我有
| _
其中|
代表行的开头(我必须添加它才能使markdown正确呈现),_
代表光标,我按删除,我想得到< / p>
| _
编辑:我刚刚发现这种情况已经发生在某些模式下,例如python-mode。
编辑2:我认为我原来的问题令人困惑。我想要这样的东西。假设我有
| my text_
,光标位于行的末尾(由_表示)。如果我输入DEL,我想得到
| my tex_
(明显)。但如果我有
| m_
我键入DEL,我想要
| _
如果我再次输入DEL ,我想要
| _
另外想想另一种方法,就删除键而言,我想将四个空格的标签视为真正的标签。
答案 0 :(得分:2)
这段代码怎么样,你可以绑定到你想要的任何代码:
(defun remove-indentation-spaces ()
"remove TAB-WIDTH spaces from the beginning of this line"
(interactive)
(indent-rigidly (line-beginning-position) (line-end-position) (- tab-width)))
注意,如果tab-width
与您想要的不匹配,请将其硬编码为-4。
如果你希望这个绑定到 DEL ,你可以这样做:
(global-set-key (kbd "DEL") 'remove-indentation-spaces)
或者,在适当的模式映射中定义它,如:
(define-key some-major-mode-map (kbd "DEL") 'remove-indentation-spaces)
更新为在删除字符和4个空格之间切换:
(defun remove-indentation-spaces ()
"remove TAB-WIDTH spaces from the beginning of this line"
(interactive)
(if (save-excursion (re-search-backward "[^ \t]" (line-beginning-position) t))
(delete-backward-char 1)
(indent-rigidly (line-beginning-position) (line-end-position) (- tab-width))))