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

如何将行中间的文本前置到Vim中的多行?

如何解决《如何将行中间的文本前置到Vim中的多行?》经验,为你挑选了4个好方法。

假设我有十行,我想将文本添加到这些行中出现的某些单词?它不必在行的开头.

从:

sdfsd   foo sdfsd
sfsd    foo fsdf
sdfsdf  foo  sdfsdf

至:

sdfsd   bar(foo sdfsd
sfsd    bar(foo fsdf
sdfsdf  bar(foo  sdfsdf

是否也可以不仅预先考虑bar(,但实际上围绕foobar(foo)

我还想快速将//注释附加到多行(C风格的注释).

我使用的是Vim/GVim 7.2.



1> sth..:

转到第一个foo,按Ctrl- v进入视觉区块模式并按下直到foo标记所有线条.然后按Shift- i在(块的)开头插入.完成后按Esc,插入的字符将添加到标记块左侧的每一行.

要在末尾插入,请再按一次Ctrl- v,向上/向下移动以标记所有受影响的线条,然后按End$将选区扩展到线条的末尾.现在你可以按Shift- a添加到所有行的末尾,就像之前的Shift- 一样i.

视觉选择也可以用正常的移动命令完成.因此,要在C中对整个块进行注释,您可以移动到左大括号并键入Ctrl- v % Shift- i // Esc.


值得注意的是在Linux中我必须在应用于所有行的前缀之前退出插入模式,并且它是我需要从可视模式进入插入模式的资本 - 即Shift + I,类型前缀,Escape,Escape.
这对腻子不起作用.当我按下`i`时没有任何反应.当我按`shift + i`时,选择消失但我能够插入文本(仅在光标所在的当前位置).
只是一个补充:如果Ctrl-V没有在Windows上的Vim中启动可视块模式,那么应该使用Ctrl-Q.
然后答案的变体是用shift + V标记视觉块然后在ex模式下改变块:'','> s/^/prexix_text /:'<,'> s/$/suffix_text /注意比"'< ,按":"时,">"由vim自动打印.

2> Brian Agnew..:

回答你的第一个问题,如下

:%s/foo/bar(&)/g

将寻找foo并围绕匹配的模式bar().该/g会在一条线做多次.

由于你只是匹配foo,你可以做一个简单的:s/foo/bar(foo)/g.但是,如果您决定匹配正则表达式而不是简单的单词(例如f[a-z][a-z]),则上述操作将起作用.上面的'&'表示您的匹配.



3> Laurence Gon..:

要为一组行添加前缀,我使用两种不同的方法之一:

一种方法是块选择(由sth提及).通常,您可以选择一个矩形区域,ctrl-V然后选择光标移动.一旦您突出显示一个矩形,按下shift-I将在矩形的左侧插入字符,或shift-A将它们附加在矩形的右侧.因此,您可以使用此技术制作一个矩形,其中包含您想要前缀,命中shift-I,键入前缀的行的最左侧列,然后单击"转义".

另一种方法是使用替换(如Brian Agnew所述).Brian的替换将影响整个文件(命令中的%表示"所有行").为了影响几行,最简单的方法是shift-V在第一行/最后一行上点击(启用可视线模式),然后移动到最后/第一行.然后输入:

:s/^/YOUR PREFIX/

^是正则表达式(在这种情况下,是行的开头).通过在可视线模式下键入它,您将看到在之前自动插入.这意味着替换的范围将是视觉选择.

额外提示:如果您的前缀包含斜杠,您可以使用反斜杠转义它们,也可以使用不同的标点字符作为命令中的分隔符.例如,要添加C++行注释,我通常会写:

:s:^:// :

对于添加后缀,替换方法通常更容易,除非您的所有行都具有完全相同的长度.只需使用$作为模式而不是^,你的字符串将被附加而不是预先填充.

如果要同时添加前缀和后缀,可以执行以下操作:

:s/.*/PREFIX & SUFFIX/

.*匹配整行.&替换中的&匹配文本(整行),但现在它将添加您的前缀和后缀.

BTW:在评论代码时,您可能希望稍后取消注释.您可以使用visual-block(ctrl-V)选择斜杠,然后点击d删除它们,或者您可以使用替换(可能使用视觉线选择shift-V)来删除这样的前导斜杠:

:s:// ::



4> Cyber Olivei..:

:救援正常!

:%norm Wibar(

:%norm WEa)

:norm(al)重放命令,就好像你输入了它们一样:

W - 转到下一个词

我 - 开始插入模式

bar( - 键入序列'bar('

或者在一行中:

:%norm Wibar(ctrlvESCEa)

如果您正在运行Windows,请键入ctrlq而不是ctrlv.

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