我最近问:
因此,从下面的代码开始:
I said Hello
I said There
I said I am some code
编写如下代码:
Hello
There
I am some code
现在,如何从一行中删除n个字符?
我最近问:
因此,从下面的代码开始:
I said Hello
I said There
I said I am some code
编写如下代码:
Hello
There
I am some code
现在,如何从一行中删除n个字符?
Answers:
更简单!同样,使用矩形命令。移动到要删除的矩形的一个角,按C-SPC
设置标记。移动到矩形的另一个角,然后按C-x r d
(delete-rectangle
)。例如,移至要操作的第一行,按C-a
或home
移至该行的开头,向下移至要操作的最后一行,移至右下角,然后删除。C-u number C-f
C-x r d
如果最后一行的字符数少于期望的数目,则改用左下角和右上角会更方便。或者,您可以插入垃圾字符(如果第一行和最后一行都较短,则很有用)。
您可以使用C-x r k
杀死矩形,以便C-x r y
稍后将其拉出()(移动到要插入矩形的位置的左上角)。
您也可以使用C-x r t
(string-rectangle
)并输入一个空字符串。
矩形命令基于列位置。如果要删除n个字符而不是n个列(这与制表符等多列字符有所不同),则可以使用正则表达式替换:不替换^.\{42\}
任何内容可删除每行的前42个字符。
另一种可能性:我真的很喜欢对这样的任务使用多个游标。可package.el
通过MELPA获得,它已成为我的emacs不可缺少的一部分。我只需选择I said
(并可能在其中包括换行符),使用M-x mc/mark-all-like-this
,然后就行了。如果需要更细粒度的控制,可以使用mc/mark-next-like-this
或mc/mark-next-lines
。
我的键绑定:
(use-package multiple-cursors
:bind (("C->" . mc/mark-next-like-this)
("C-M->" . mc/mark-all-like-this-dwim)))
强制性的Emacs Rocks!集:http : //emacsrocks.com/e13.html
为了完整起见:可以通过用空字符串进行正则表达式替换^...
(或更一般地:)来删除每行的前3个字符(正式地:从该点或区域中)^.\{3\}
。
说明:在regexen中,^
意思是“行的开头”,.
意思是“任何字符”,并且\{n\}
意思是“ 前事物的n次重复”。
这具有交互性的另一个好处(除非按下!
,否则query-regexp-replace
从现在起无需进行任何其他疑问就可以替换所有内容)。