我在几个地方读过emacs中的矩形函数非常有用。我已经读过一些关于它们的内容,但我无法理解为什么。我的意思是,当你想杀死一个段落时,你标记第一行/列然后标记最后一个,那实际上是一个矩形,对吧?但你仍然可以使用正常的杀戮......
那么你会用它们进行什么样的转换?
答案 0 :(得分:23)
如果您在包含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
从鳄鱼皮中选择吉他。选择的开始和结束标出矩形的两个相对的角。输入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
答案 1 :(得分:15)
我喜欢将矩形用于两个主要目的,在每一行插入相同的文本,或者删除一列文本(类似于Dave Webb的答案)。
这些有两个有用的快捷方式,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中。我遇到了更复杂的情况,这是有用的,你实际上有想要在特定地方的每一行插入的文本。
所以像Dave Webb那样的另一种情况,如果你想要杀死一个矩形,可以使用C-x r k
,因为它的速度要快得多; - )
另外,根据我刚开始时打印出的reference card,您可以执行以下操作:
C-x r r
:复制到注册C-x r y
:猛拉一个矩形C-x r o
:打开一个矩形,右移文本(无论这意味着什么......)C-x r c
:删除一个矩形(我认为这意味着用空格替换它,但你必须尝试一下才能看到)C-x r t
:带文字的前缀(如上所述)C-x r k
:杀戮(如上所述)答案 2 :(得分:1)
在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 。