我在几个地方读到 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 的答案)。
这些有 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默认绑定到。