我在几个地方读到 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 还有哒哒!您已对列重新排序:

1. alphorn      alligator    
2. bugle        baboon       
3. cornet       crocodile    
4. didgeridoo   dog          
5. euphonium    elephant     
6. flugelhorn   fish         
7. guitar       gopher       

其他提示

我喜欢使用矩形有两个主要目的,在每一行插入相同的文本,或者删除一列文本(类似于戴夫·韦伯的答案)。

有 2 个有用的快捷方式, C-x r k 将杀死一个矩形,并且 C-x r t 插入(还有其他带有 C-x r 前缀,但这些是我使用的)。

假设您想要获取一些代码并对其进行格式化,以便可以将其发布在 Stack Overflow 帖子中......您需要在前面添加 4 个空格。所以,转到第一行的开头, C-SPC 进行标记,然后转到最后一行的开头并 C-x r t <SPC> <SPC> <SPC> <SPC> <RET>, ,这就是你得到的!然后你可以将其复制并粘贴到 Stack Overflow 中。我遇到过更复杂的情况,这很有用,您实际上想要在特定位置的每一行上插入文本。

因此,像戴夫·韦伯那样的另一种情况,如果你想杀死一个矩形,请使用 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:杀戮(如上所述)

在 emacs24+ 中还有对行进行编号的函数:

(rectangle-number-lines START END START-AT &optional FORMAT)

Insert numbers in front of the region-rectangle.

START-AT, if non-nil, should be a number from which to begin
counting.  FORMAT, if non-nil, should be a format string to pass
to `format' along with the line count.  When called interactively
with a prefix argument, prompt for START-AT and FORMAT.

它绑定到 C-x r N 默认情况下。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top