Vim视觉选择在Emacs中删除/插入

时间:2011-10-02 10:25:06

标签: emacs

我试图找到vim视觉模式的替代品,这非常有用,比方说我想删除下面两行中的前两个字符

11 line1
22 line2

在vim中,我进入可视模式并选择我要删除的区域,然后将其删除。此外我还可以在

之后添加到列中
11
22

11 added line1
22 added line2
在可视模式下选择列后,使用Shift + I。有没有办法在emacs中做同样的事情?

4 个答案:

答案 0 :(得分:8)

听起来像Emacs的矩形功能。你必须在头部和标记之间可视化头部的矩形。

C-x r k杀死矩形 C-x r t用文字填充矩形。您需要一个矩形零列宽来执行第二次请求。

答案 1 :(得分:7)

cua-mode提供了这种功能。您可以在.emacs

中使用以下内容将其启用
(setq cua-enable-cua-keys nil)
(cua-mode)

第一行是必要的,以防止cua-mode用Windows风格的东西替换一堆标准键盘快捷键(C-c用于复制,C-x用于剪切等)。

进入cua-mode后,C-enter将打开视觉矩形,然后您可以使用移动键(箭头,C-nC-f等)展开视觉矩形覆盖您想要操作的文本。当这种情况发生时,点击enter会将光标移动到矩形的边缘,并且您键入的任何内容都将插入与光标同侧的矩形外部。插入与矩形的大小相匹配,因此如果您想同时将同一文本添加到一堆行的开头(或中间或末尾),这是最快的方法。

如果您禁用了cua键绑定,则C-w将终止该矩形的内容。

有点不幸的是,cua模式的矩形位不在他们自己的模式中,因为许多不想要cua模式绑定的人没有意识到模式也有这个非常酷的功能!

答案 2 :(得分:3)

我认为emacs rectangle feature将是一个解决方案

答案 3 :(得分:3)

听起来Vimpulse可能就是您所需要的:

http://www.emacswiki.org/emacs/vimpulse.el

  

Vimpulse模拟Vim最受欢迎的功能,如可视模式    和文本对象。 Vimpulse是对Viper的一组修改    模拟vi的标准库。 Vimpulse不是一种次要模式;    一旦加载,Viper就会开始工作    像Vim一样的方式。