emacs中的矩形函数

时间:2020-03-05 18:52:11  来源:igfitidea点击:

我在几个地方读到过,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:杀死(如上所述)