有没有人有用于缩进(和取消缩进)文本 block 的 Emacs 宏?
我指的是通常意义上的“缩进”,而不是 Emacspeak 中的“缩进”。换句话说,我想标记一个区域,按 C-u 2,运行这个宏,让它在该区域的每一行之前添加两个空格。
或者在运行宏之前按 C-u -2 并让它从区域中每行的开头删除两个空格。如果行没有足够的前导空格时它会提示,则可加分。
最佳答案
严格缩进(绑定(bind)到 C-x TAB)做你想做的。它在 indent.el 中,它应该是标准 emacs 发行版的一部分。
此外,要让它在某处没有足够的空格时提示/中止,您可以这样做:(原始缩进严格代码的快速丑陋破解)
(defun enough-whitespace-to-indent-p (start end arg)
(save-excursion
(goto-char end)
(setq end (point-marker))
(goto-char start)
(or (bolp) (forward-line 1))
(while (and (< (point) end)
(>= (+ (current-indentation) arg) 0))
(forward-line 1))
(>= (point) end)))
(defun indent-rigidly-and-be-picky (start end arg)
(interactive "r\np")
(if (or (plusp arg) (enough-whitespace-to-indent-p start end arg))
(indent-rigidly start end arg)
(message "Not enough whitespace to unindent!")))
关于emacs - 有没有人有用于缩进(和取消缩进)文本 block 的 Emacs 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787145/