fik*_*nik 11 emacs indentation text-manipulation
我正在寻找emacs的方法,通过n空格向右或向左移动文本.它在vim <<或中的类似功能>>.它应该在区域上工作,或者如果在当前行上没有选择区域,并且不将光标从其当前位置移动.
来自EmacsWiki的解决方案并不能很好地工作,M-x indent-rigidly因为它有点记住了最后使用的区域并转而改变了一个区域.最接近似乎是这里的一个,但我没有设法让它工作.我不是一个lisp开发人员,因此修改代码很困难.我将不胜感激任何帮助.
谢谢!
ych*_*che 33
你可以选择区域,然后C-u C-x <tab>移动4个空格.您可以在Cu之后键入一个数字以将4更改为其他任何内容.
要做到这一点,我通常会做一个技巧:
这也可以通过某种方式(以相同的方式)以编程方式完成.
编辑:我刚刚阅读了emacs wiki中的文章,它是相同的解决方案,除了CUA模式比"常见"矩形选择(因为它是可视的)无限强大.
也许这会以你想要的方式运作.
(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)))