我在几个地方读过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
从鳄鱼皮中选择吉他.选择的开始和结束标出矩形的两个相对的角.输入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
进行标记,然后转到最后一行的开头C-x r t
,然后就可以了!然后您可以将其复制并粘贴到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
:杀戮(如上所述)