如何在Vim中快速删除一对圆括号、方括号或大括号?

vptzau2j  于 2023-03-08  发布在  其他
关注(0)|答案(6)|浏览(439)

在Vim中,如果我有这样的代码(用Ruby编写):

anArray << [anElement]

光标在第一个[上,我可以使用%键跳到],然后删除[]d%对之间的所有内容。
但如果我只想删除[],并保留两者之间的所有剩余内容,该怎么办?换句话说,最快的方法是:

anArray << anElement
omjgkv6w

omjgkv6w1#

可以利用Vim中内置的文本对象(参见:help text-objects),所需的编辑可以表示为以下三个操作的序列。
1.剪切方括号内的文本:

di[

1.选择(空)方括号:

va[

或者,您可以只选择光标下方的字符及其左侧的字符,因为步骤1中的命令始终将光标放在右括号上:

vh

1.将剪切的文本粘贴到所选方括号上:

p

总之,它为我们提供了以下正常模式命令序列:

di[va[p

或者,当使用步骤2的替代形式时:

di[vhp
bvuwiixz

bvuwiixz2#

ma%xax(标记寄存器a中的位置,转到匹配圆括号,删除字符,转到标记a,删除字符)。 编辑:%x``x`做了同样的事情(感谢@Alok的提示)。

o2g1uqev

o2g1uqev3#

使用Vim的Surround插件,您可以使用ds<delimeter>消除周围的分隔符。
要通过Vundle插件安装,请添加

Plugin 'tpope/vim-surround'

添加到.vimrc文件并运行:PluginInstall

ui7jx7zq

ui7jx7zq4#

如果您对指向行的第一个字符的标记或使用%有问题...

di[vhp

也可以工作...当光标在里面的任何地方时,它会删除匹配的[]括号。“[”可以用“{”或“(”替换。

r7xajy2e

r7xajy2e5#

如果您想一次删除一行分隔符,其他答案也可以。
另一方面,如果您想从整个文件中删除函数及其分隔符,请用途:

:%s/function(\(.*\))/\1/g

其在文件中的任何地方用arguments替换function(arguments)

qzwqbdag

qzwqbdag6#

当光标位于方括号/圆括号上时,可以使用d%。

相关问题