删除Vim中的一对括号,括号或大括号

时间:2010-01-18 06:14:47

标签: vim

在Vim中,如果我有代码如(在Ruby中):

anArray << [anElement]

我的光标在第一个[上,我可以使用]键跳转到%,我可以删除[]对之间的所有内容d%,但如果我只想删除[],请将两者之间的剩余内容全部删除。换句话说,最快捷的方式是什么:

anArray << anElement

6 个答案:

答案 0 :(得分:53)

使用Vim的Surround.vim插件:

http://www.vim.org/scripts/script.php?script_id=1697

...您可以使用ds<delimeter>消除周围的分隔符。

通过Vundler插件安装:

添加:

Plugin 'tpope/vim-surround' 

到您的.vimrc文件并运行:PluginInstall

答案 1 :(得分:49)

ma%x`ax(在注册a中标记位置,转到匹配的paren,删除字符,转到标记a,删除字符。)

编辑:

%x``x做同样的事情(感谢alok的提示)

答案 2 :(得分:39)

可以利用内置到Vim中的文本对象(参见:help text-objects)。所需的编辑可以表示为以下序列 三个动作。

  1. 剪切方括号内的文字。

    di[
    
  2. 选择(空)方括号。

    va[
    
  3. 将剪切的文字粘贴在它们上面。

    p
    
  4. 总而言之

    di[va[p
    

答案 3 :(得分:5)

如果您对指向该行的第一个字符或使用%...

的标记有疑问
di[vhp 

也可以...当光标位于任何内部时,它会删除匹配的[]括号。 '['可以替换为'{'或'('。

答案 4 :(得分:2)

如果您想一次删除一行分隔符,则其他答案可以正常工作。

另一方面,如果要删除一个函数,并使用整个文件中的分隔符:

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

将文件中的function(arguments)替换为arguments

答案 5 :(得分:0)

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