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

Jos*_*osh 50 vim

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

anArray << [anElement]
Run Code Online (Sandbox Code Playgroud)

我的光标在第一[,我可以跳到]%钥匙,我可以删除之间的所有内容[]对用d%什么,但如果我只是想删除[,并]留下两个之间的所有剩余内容.换句话说,最快捷的方式是什么:

anArray << anElement
Run Code Online (Sandbox Code Playgroud)

arc*_*age 56

使用Surround.vimVim插件:

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

...你可以消除周围的分隔符ds<delimeter>.

通过Vundler插件安装:

加:

Plugin 'tpope/vim-surround' 
Run Code Online (Sandbox Code Playgroud)

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


Jus*_*ith 53

ma%x`ax(在寄存器中标记位置a,转到匹配的paren,删除char,转到标记a,删除char).

编辑:

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

  • 正如我在主要评论中所说,你不需要手动标记:你可以通过两个反对来到最后一个位置.所以%x``x更快. (17认同)
  • 我更喜欢`%% x``x`,因为你可以在parens里面的任何地方. (7认同)
  • 你只能执行`%% x \`\`x`并在没有嵌套parens的parens中获得所需的效果. (3认同)
  • `%x ctrl-o x` 也适用于那些更习惯于该跳转快捷方式的人。 (2认同)

ib.*_*ib. 45

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

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

    di[
    
    Run Code Online (Sandbox Code Playgroud)
  2. 选择(空)方括号.

    va[
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将剪切文本粘贴在它们上面.

    p
    
    Run Code Online (Sandbox Code Playgroud)

它总共给出了

di[va[p
Run Code Online (Sandbox Code Playgroud)

  • 感谢您演示非插件方式!非常适合我们这些从事嵌入式系统的人. (4认同)

小智 5

如果您想一次删除一行分隔符,其他答案可以很好地工作。

另一方面,如果您想从整个文件中删除函数及其分隔符,请使用:

:%s/function(\(.*\))/\1/g
Run Code Online (Sandbox Code Playgroud)

它将替换文件中的所有位置function(arguments)arguments


Jan*_*Jan 5

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

di[vhp 
Run Code Online (Sandbox Code Playgroud)

同样有效...当光标位于任何位置时,它会删除匹配的[]括号.'''可以替换为'{'或'('.