编程中的一个常见任务是删除当前块上的条件。
在vim中,是否有一种简单的方法可以删除当前块的第一行('if'语句)和最后一行(结束大括号),并可能相应地重新启动。如果内置的内容没有简单的组合键,那么编写脚本的简单方法是什么?
考虑到这一点,当然if语句的条件可能跨越多行,因此可能需要一个脚本来完全捕获它。但是,对于我的代码,只删除第一行和最后一行将捕获95%的案例。
答案 0 :(得分:7)
可能的解决方案
yiBvaBVpgv<
yiB
猛拉内部块vaBV
通过选择一个块,然后按行选择p
粘贴在视觉选择的文字上gv<
重新选择文字并取消缩进环绕像映射一样删除周围的块:
nnoremap dsB yiBvaBVpgv<
ib提供了一个更短的解决方案。此解决方案不会改变视觉标记:'<
,'>
diB]pkdk
diB
删除当前内部块]p
将新删除的文字粘贴到块的末尾,但调整缩进。kdk
向上移动一行,然后删除2行,从而删除块的开头和结尾。答案 1 :(得分:2)
di{
dk
k
"2p
之类的内容怎么样?或者更优雅,<i{
di{
dk
k
"2p
。请注意,您必须在块中才能使其工作 - 如果您在块的开始或关闭线上,则会影响周围的块。
答案 2 :(得分:1)
command! -range=% Delete1$ <line1>delete _|<line2>delete _