我正在寻找emacs的方法,通过n
个空格将文本向右或向左移动。与vim <<
或>>
类似的功能。它应该在一个区域上工作,或者如果在当前行上没有选择任何区域,并且不将光标从当前位置移开。
来自EmacsWiki的解决方案与M-x indent-rigidly
的效果不是很好,因为它会稍微记住最后使用的区域并将其移位。最接近的似乎是那个here,但我没有设法让它工作。我不是一个lisp开发人员,因此修改代码很困难。我将不胜感激。
谢谢!
答案 0 :(得分:32)
您可以选择区域,然后C-u C-x <tab>
将移动4个空格。您可以在C-u后键入一个数字,将4更改为其他任何内容。
答案 1 :(得分:6)
为了达到这个目的,我通常会做一个技巧:
这也可以通过某种方式(以相同的方式)以编程方式完成。
编辑: 我刚刚阅读了emacs wiki中的文章,除了CUA模式之外,它是相同的解决方案,它比“常见的”rectanguar选择功能强大得多(因为它是可视的)。
答案 2 :(得分:6)
也许这会以你想要的方式运作。
(defun shift-text (distance) (if (use-region-p) (let ((mark (mark))) (save-excursion (indent-rigidly (region-beginning) (region-end) distance) (push-mark mark t t) (setq deactivate-mark nil))) (indent-rigidly (line-beginning-position) (line-end-position) distance))) (defun shift-right (count) (interactive "p") (shift-text count)) (defun shift-left (count) (interactive "p") (shift-text (- count)))