emacs中的矩形函数
我在几个地方读到过,emacs中的矩形函数非常有用。我已经阅读了一些有关它们的内容,但我不知道为什么。我的意思是,当我们要删除段落时,先标记第一行/列,然后标记最后一行,实际上是矩形,对吗?但是你仍然可以使用普通的杀...
那么我们将对它们进行什么样的转换?
解决方案
回答
如果文本文件中具有" M-x delete-rectangle"或者" M-x kill-rectangle"的数据在列中,则可以删除单列数据。同样,M-x yank-rectangle
将粘贴在文本列中。
例如,使用以下文本:
1. alligator alphorn 2. baboon bugle 3. crocodile cornet 4. dog didgeridoo 5. elephant euphonium 6. fish flugelhorn 7. gopher guitar
从鳄鱼皮的a到吉他的g中进行选择。选择的开始和结束标记出矩形的两个相对角。输入M-x kill-rectangle
,我们将立即获得:
1. alphorn 2. bugle 3. cornet 4. didgeridoo 5. euphonium 6. flugelhorn 7. guitar
接下来,将标记放在第一行的末尾,如果需要,添加一些空格,然后输入" M-x yank-rectangle"和ta-da!我们已重新排列各列:
1. alphorn alligator 2. bugle baboon 3. cornet crocodile 4. didgeridoo dog 5. euphonium elephant 6. flugelhorn fish 7. guitar gopher
回答
我喜欢将矩形用于两个主要目的,在每行上插入相同的文本,或者杀死一列文本(类似于Dave Webb的回答)。
有两个有用的快捷键,C-x r k
将杀死一个矩形,和C-x r t
插入(还有其他带有C-x r
前缀的矩形命令,但我使用的是这些命令)。
因此,假设我们要获取一些代码并将其格式化,以便可以将其发布到Stack Overflow帖子中……我们需要在前面加上4个空格。因此,转到第一行的开头" C-SPC"进行标记,然后转到最后一行的开头和" Cx rt <SPC> <SPC> <SPC> <SPC> <RET>",然后你有它!然后,我们可以将其复制并粘贴到Stack Overflow中。我遇到了更复杂的情况,这很有用,我们实际上要在特定位置的每一行上插入文本。
因此,像Dave Webb的情况一样,如果我们想杀死一个矩形,请使用C-x r k
,因为它快得多;-)
此外,根据我刚开始时打印的参考卡,我们可以执行以下操作:
C-x r r
:复制到寄存器C-x r y
:抽出一个矩形C-x r o
:打开一个矩形,向右移动文本(无论...表示什么)C-x r c
:删去一个矩形(我想这意味着用空格替换它,但是我们必须尝试一下才能看到)C-x r t
:带有文本的前缀(如上所述)C-x r k
:杀死(如上所述)