我试图找到vim视觉模式的替代品,这非常有用,比方说我想删除下面两行中的前两个字符
11 line1
22 line2
在vim中,我进入可视模式并选择我要删除的区域,然后将其删除。此外我还可以在
之后添加到列中11
22
像
11 added line1
22 added line2
在可视模式下选择列后,使用Shift + I。有没有办法在emacs中做同样的事情?
答案 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-n
,C-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一样的方式。