【问题标题】:Shift a region or line in emacs在 emacs 中移动区域或行
【发布时间】:2010-07-01 09:17:00
【问题描述】:

我正在寻找一种在 emacs 中将文本向右或向左移动 n 空格的方法。它在 vim <<>> 中的类似功能。它应该在一个区域上工作,或者如果在当前行上没有选择任何区域,并且不会将光标从其当前位置移动。

EmacsWiki 的解决方案不像M-x indent-rigidly 那样工作得很好,因为它在某种程度上记住了最后使用的区域并转移了那个区域。最接近的似乎是here,但我没能成功。我不是 lisp 开发人员,所以很难修改代码。我将不胜感激。

谢谢!

【问题讨论】:

    标签: emacs indentation text-manipulation


    【解决方案1】:

    您可以选择区域,然后C-u C-x <tab> 将移动 4 个空格。您可以在 C-u 后键入一个数字,将 4 更改为其他任何值。

    【讨论】:

    • 再提示:C-u 后面的数字可能为负数,在这种情况下,区域将向左移动而不是向右移动。
    【解决方案2】:

    也许这是你想要的方式。

    (defun shift-text (距离) (如果(使用区域-p) (让((标记(标记))) (保存游览 (缩进严格(区域开始) (区域端) 距离) (按标记标记 t t) (setq deactivate-mark nil))) (缩进刚性(行起始位置) (行结束位置) 距离))) (defun shift-right (count) (交互式“p”) (移位文本计数)) (defun shift-left (count) (交互式“p”) (移位文本(-计数)))

    【讨论】:

    • 太棒了!这正是我一直在寻找的!非常感谢。你不想把它也放到 EmacsWiki 上吗?
    • 我应该怎么做才能让它转移4调用函数4次?
    【解决方案3】:

    为了达到这个目的,我通常会做一个技巧:

    • 激活CUA模式
    • 转到行首
    • C-RET,现在如果您移动光标,您应该会看到一个矩形红色区域
    • 将光标向下移动并键入空格,直到获得正确的移位。

    这也可以通过某种方式(以相同的方式)以编程方式完成。

    编辑: 我刚刚阅读了 emacs wiki 中的文章,除了 CUA 模式之外,它是相同的解决方案,它比“普通”矩形选择(因为它是可视的)强大得多。

    【讨论】:

    • 您可以使用(cua-selection-mode t) 单独启用CUA 出色的矩形编辑工具和其他功能。如果你没有将C-RET 绑定到其他东西,你可以把它放在你的初始化文件中,它不会与任何东西冲突。
    • 关于换行基本用法的快速说明:C-RET + 光标移动指定矩形,RET 循环角,在矩形之前/之后键入插入,C-RET 退出。有关此次要模式提供的全部详细信息,请参阅 cua-base.el 中“CUA 矩形支持”下的注释,或阅读trey-jackson.blogspot.com/2008/10/…
    • 我有一个忏悔。我使用CUA模式。
    • 喜欢这个提示(20 多年的 emacs 用户)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多