在Vim中,如果我有这样的代码(用Ruby编写):
anArray << [anElement]
光标在第一个[上,我可以使用%键跳到],然后删除[]与d%对之间的所有内容。但如果我只想删除[和],并保留两者之间的所有剩余内容,该怎么办?换句话说,最快的方法是:
[
%
]
[]
d%
anArray << anElement
omjgkv6w1#
可以利用Vim中内置的文本对象(参见:help text-objects),所需的编辑可以表示为以下三个操作的序列。1.剪切方括号内的文本:
:help text-objects
di[
1.选择(空)方括号:
va[
或者,您可以只选择光标下方的字符及其左侧的字符,因为步骤1中的命令始终将光标放在右括号上:
vh
1.将剪切的文本粘贴到所选方括号上:
p
总之,它为我们提供了以下正常模式命令序列:
di[va[p
或者,当使用步骤2的替代形式时:
di[vhp
bvuwiixz2#
ma%xax(标记寄存器a中的位置,转到匹配圆括号,删除字符,转到标记a,删除字符)。 编辑:%x``x`做了同样的事情(感谢@Alok的提示)。
ma%x
(标记寄存器
中的位置,转到匹配圆括号,删除字符,转到标记
,删除字符)。 编辑:
o2g1uqev3#
使用Vim的Surround插件,您可以使用ds<delimeter>消除周围的分隔符。要通过Vundle插件安装,请添加
ds<delimeter>
Plugin 'tpope/vim-surround'
添加到.vimrc文件并运行:PluginInstall。
.vimrc
:PluginInstall
ui7jx7zq4#
如果您对指向行的第一个字符的标记或使用%有问题...
也可以工作...当光标在里面的任何地方时,它会删除匹配的[]括号。“[”可以用“{”或“(”替换。
r7xajy2e5#
如果您想一次删除一行分隔符,其他答案也可以。另一方面,如果您想从整个文件中删除函数及其分隔符,请用途:
:%s/function(\(.*\))/\1/g
其在文件中的任何地方用arguments替换function(arguments)。
arguments
function(arguments)
qzwqbdag6#
当光标位于方括号/圆括号上时,可以使用d%。
6条答案
按热度按时间omjgkv6w1#
可以利用Vim中内置的文本对象(参见
:help text-objects
),所需的编辑可以表示为以下三个操作的序列。1.剪切方括号内的文本:
1.选择(空)方括号:
或者,您可以只选择光标下方的字符及其左侧的字符,因为步骤1中的命令始终将光标放在右括号上:
1.将剪切的文本粘贴到所选方括号上:
总之,它为我们提供了以下正常模式命令序列:
或者,当使用步骤2的替代形式时:
bvuwiixz2#
ma%x
ax(标记寄存器
a中的位置,转到匹配圆括号,删除字符,转到标记
a,删除字符)。 编辑:
%x``x`做了同样的事情(感谢@Alok的提示)。o2g1uqev3#
使用Vim的Surround插件,您可以使用
ds<delimeter>
消除周围的分隔符。要通过Vundle插件安装,请添加
添加到
.vimrc
文件并运行:PluginInstall
。ui7jx7zq4#
如果您对指向行的第一个字符的标记或使用%有问题...
也可以工作...当光标在里面的任何地方时,它会删除匹配的[]括号。“[”可以用“{”或“(”替换。
r7xajy2e5#
如果您想一次删除一行分隔符,其他答案也可以。
另一方面,如果您想从整个文件中删除函数及其分隔符,请用途:
其在文件中的任何地方用
arguments
替换function(arguments)
。qzwqbdag6#
当光标位于方括号/圆括号上时,可以使用d%。