当前位置:  开发笔记 > 编程语言 > 正文

如何在Vim中的多行重复编辑?

如何解决《如何在Vim中的多行重复编辑?》经验,为你挑选了6个好方法。

我知道在Vim我经常可以通过在它前面添加一个数字来重复命令.例如,可以通过以下方式删除5行:

5dd

例如,通常还可以指定一系列行来应用命令

:10,20s:hello:goodbye:gc

如何执行"垂直编辑"?例如,我想在给定的每一行的开头(跳过空格,即你在命令模式下按Shift-I键入逗号后得到的内容)中插入一个特殊的符号,比如一个逗号.范围.如何实现这一目标(不采用下行周期 - 下降期)?



1> rampion..:

Ctrl- 按块v进入可视模式.然后你可以移动(hjkl正常,顺时针),如果你想在多行上插入一些东西,使用Shift- i.

所以对于文本:

abc123abc
def456def
ghi789ghi

如果你点击Ctrl- v将光标放在1上,点击j两次下去两列,然后Shift- i,ESC,你的文字将如下所示:

abc,123abc
def,456def
ghi,789ghi

(多线插入有一点滞后,直到你击中后才会渲染ESC).


实际上,它是CTRL-v或CTRL-V.Vim对CTRL代码不区分大小写(请参阅:help CTRL- {char}).
尼斯.Ctrl-V意味着大写,顺便说一下,你可以说Ctrl-Shift-v
我很好奇.为什么他们不使用没有shift键的`i`?
在搜索了一下为什么这个方法不起作用之后是因为它使用了大写I(shift-i)而不是i(同样,它只是ctrl-v,因为ctrl-shift-v将我移到了最后)

2> Svante..:

:10,20s/^/,/

或使用宏,记录:

q a i , ESC j h q

用于:

@ a

说明:q a开始录制宏进行注册a,q结束录制.有寄存器a,以z供这一点.


:S/^ \(\ S*\)/\1,/
说明:`^ \(\ s*\)`捕获初始空格并将其保存到寄存器中,然后可以使用`\ 1`读取.

3> Cyber Olivei..:

这就是:norm(al)命令的用途:

:10,20 normal I,



4> emboss..:

如果您已经使用'.' 重复你的最后一个命令,然后我发现这是迄今为止最方便的解决方案.它允许您使用在视觉块的每一行上重复上一个命令

" allow the . to execute once for each line of a visual selection
vnoremap . :normal .



5> Albert..:

我相信最简单的方法是

1)记录一行的宏,称之为'a'; 在这种情况下有一种类型

qa I,ESC jq

2)选择要应用宏的行块

3)使用'norm'函数在这个行块上执行宏'a',即

:'<,'>norm@a



6> wimh support..:

我认为最简单的方法是录制宏,然后根据需要重复宏.例如,要在每行的开头添加逗号,请键入:

q a I , ESC j q

重复那5次,你进入

5 @ a

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有