在Emacs中缩进多行

时间:2017-04-18 03:15:01

标签: emacs edit

我正在寻找快捷方式或功能,为选择中的所有行添加一个标签。另外如何将一个标签缩小到选择中的所有行?

有多个参考资料。但我找不到一个模仿选定文本上的tab和shift-tab的方法,就像在geany这样的常规编辑器中一样。可以选择多行,然后使用tab或shift-tab左右移动文本,直到找到最佳。

我找到了C-x tab <left> or <right>:这会将选区中的所有线条一次向左或向右移动一个空格。 C-5 C-x tab将它移动5个空格然后停止。但我希望这些行一次移动制表符空格,同时保持选择,以便我可以重复或撤消该过程。我怎么能这样做?

基本上,我需要一个在选择一些行后可以调用的函数。它应该:

  • 检测选定的行
  • 按下一个键(在num pad上说1),它应该将所选文本向左移动5个空格(并保留选择)
  • 按下另一个键(比如num pad上的3),它应该将所选文本向右移动5个空格(并保持选择)
  • 按ENTER键时,该功能应该结束。

可以将以上功能添加到C-x tab快捷方式,其功能与(使用左右键)完全相同,但它一次仅将所选文本移动一个空格。

2 个答案:

答案 0 :(得分:4)

  

我正在寻找快捷方式或功能,为选择中的所有行添加一个标签。

首先选择一个地区。

C-SPC [set-mark-command]

选择行的区域,第一行开头的标记和最后一行的开头的点(反之亦然),然后

C-x r t [string-rectangle]
C-q TAB [quoted-insert]
  

我找到C-x TAB <left><right>:这会将选区中的所有线条一次左移或右移一个空格。

您是否看到了点击S-<left>S-<right>的选项?这应该为你做Shift + Right,也许只取决于你所处的模式以及是否启用了indent-tabs-mode

答案 1 :(得分:0)

如果您使用邪恶模式,则根据模式,您可以使用键>将当前行或选区缩进到一个级别。我不知道如何插入标签。通过关键字(C-h d indent tab RET)快速查看文档,看起来我们有变量indent-tabs-mode

  如果这是非零

,缩进可以插入标签

更一般地说,这似乎并不适合您的要求,但几乎是因为它有助于连续多次缩进多行:indent-tools(在melpa上)(我的玩具)。它意味着基于缩进的文件(所以yaml,python,...)并且它使用命令给出一个九头蛇(有助于重复动作):缩进或去缩进当前的缩进块,段落,等等,用于评论,删除,折叠和移动缩进块。