我正在寻找一种在emacs中将文本向右或向左移动n
空格的方法。它在 vim<<
或>>
. 它应该在一个区域上工作,或者如果在当前行上没有选择任何区域,并且不会将光标从其当前位置移动。
EmacsWiki的解决方案效果不佳,M-x indent-rigidly
因为它在某种程度上记住了最后使用的区域并转移了那个区域。最接近的似乎是这里的,但我没有设法让它工作。我不是 lisp 开发人员,因此很难修改代码。我将不胜感激。
谢谢!
您可以选择区域,然后C-u C-x <tab>
将移动 4 个空格。您可以在 Cu 之后键入一个数字,将 4 更改为其他任何值。
也许这可以按照您想要的方式工作。
(defun shift-text (距离) (如果(使用区域-p) (让((标记(标记))) (保存游览 (缩进严格(区域开始) (区域端) 距离) (按标记标记 tt) (setq deactivate-mark nil))) (缩进刚性(行起始位置) (行结束位置) 距离))) (defun shift-right (count) (交互式“p”) (移位文本计数)) (defun shift-left (count) (交互式“p”) (移位文本(-计数)))
为了实现这一点,我通常会做一个技巧:
这也可以通过某种方式(以相同的方式)以编程方式完成。
编辑:我刚刚阅读了 emacs wiki 中的文章,除了 CUA 模式之外,它是相同的解决方案,它比“普通”矩形选择(因为它是视觉的)强大得多。