Emacs 将区域缩进为刚性块

Emacs 将区域缩进为刚性块,emacs,indentation,Emacs,Indentation,我想将一个区域向左移动一个制表位,作为一个刚性块(不改变内线的缩进) 以下是相关部门的报价,但我不明白: C-x选项卡此命令用于更改所有行的缩进 从区域开始,将受影响的线作为“刚性”单元移动 如果在没有参数的情况下调用,则该命令将激活 以交互方式调整受影响线的缩进。虽然 此瞬态模式处于活动状态,键入“左”或“右”将向左缩进 分别向右移动一个空格。您也可以键入S-LEFT或 S-RIGHT向左或向右缩进到下一个制表位(请参见制表符 停止)。键入任何其他键将禁用瞬态模式,然后继续 正常编辑 我没有看

我想将一个区域向左移动一个制表位,作为一个刚性块(不改变内线的缩进)

以下是相关部门的报价,但我不明白:

C-x选项卡此命令用于更改所有行的缩进 从区域开始,将受影响的线作为“刚性”单元移动

如果在没有参数的情况下调用,则该命令将激活 以交互方式调整受影响线的缩进。虽然 此瞬态模式处于活动状态,键入“左”或“右”将向左缩进 分别向右移动一个空格。您也可以键入S-LEFT或 S-RIGHT向左或向右缩进到下一个制表位(请参见制表符 停止)。键入任何其他键将禁用瞬态模式,然后继续 正常编辑

我没有看到一个瞬态模式。如何将区域移动到上一个制表位


这种瞬态模式的行为在Emacs 24.4中引入。在本例中,提交者运行的是24.3

在Emacs 24.3上,
严格缩进
不能向前或向后移动“到最近的制表位”。相反,它只能用于按给定的字符数进行移位

例如:

  • 要将区域向左移动7个字符,请使用
    C-u-7 C-x
  • 要将区域向右移动3个字符,请使用
    C-u 3 C-x

我认为您的目标也可以通过“矩形操作”实现

要将文本块向左移动一个制表位,只需删除左侧的一列制表位,然后文本块将自动向左移动已删除内容的长度

执行此操作的步骤:

  • 选择要作为区域删除的内容。请注意,区域的起点和终点将是矩形的两个顶点
  • 发出
    \C-x rd
    ,或
    M-x删除矩形
    要将文本块向右移动一个制表位,只需在文本块之前插入一列制表位即可

  • 同上。但是现在矩形的宽度应该是0(也就是说,区域的起点和终点在同一列上)
  • 发出
    \C-x r t
    ,或
    M-x字符串矩形
    。此处
    是您要插入的内容,可以是其他任何内容

  • C-x
    通常绑定到
    严格缩进
    。。。如果不是,那么也许可以用
    C-hk
    检查您的密钥绑定,然后
    C-x
    @donkopotamus
    C-x
    是好的——不过我正在寻找deindent/unindent/dedent。
    C-hk
    是一个很好的提示——谢谢。如果它绑定正确,那么
    C-x
    应该与前面的
    选项卡宽度的倍数保持一致。你的情况如何?@donkopotamus我按
    C-x
    ,然后释放
    ,然后释放
    SHIFT-LEFTARROWKEY
    。你是这么说的吗?这样做,它似乎没有注意到所有这些都应该是同一个命令。对于
    C-x
    部分,它只是将区域向右缩进一个字符,然后像
    左移
    通常所做的那样高亮显示一个字符。如果高亮显示一个区域,然后
    M-x严格缩进
    ,会发生什么?在我的特殊情况下,Emacs 24.3糟糕,胖手指两次!