在Vim中,如果我有代码如(在Ruby中):
anArray << [anElement]
我的光标在第一个[
上,我可以使用]
键跳转到%
,我可以删除[]
对之间的所有内容d%
,但如果我只想删除[
和]
,请将两者之间的剩余内容全部删除。换句话说,最快捷的方式是什么:
anArray << anElement
答案 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
)。所需的编辑可以表示为以下序列
三个动作。
剪切方括号内的文字。
di[
选择(空)方括号。
va[
将剪切的文字粘贴在它们上面。
p
总而言之
di[va[p
答案 3 :(得分:5)
如果您对指向该行的第一个字符或使用%...
的标记有疑问di[vhp
也可以...当光标位于任何内部时,它会删除匹配的[]括号。 '['可以替换为'{'或'('。
答案 4 :(得分:2)
如果您想一次删除一行分隔符,则其他答案可以正常工作。
另一方面,如果要删除一个函数,并使用整个文件中的分隔符:
:%s/function(\(.*\))/\1/g
将文件中的function(arguments)
替换为arguments
。
答案 5 :(得分:0)
您可以在光标位于方括号/圆括号上时使用 d%。