是否有一种简单的内置方法可以删除vim中块的第一行和最后一行?

时间:2011-09-19 16:10:19

标签: vim

编程中的一个常见任务是删除当前块上的条件。

在vim中,是否有一种简单的方法可以删除当前块的第一行('if'语句)和最后一行(结束大括号),并可能相应地重新启动。如果内置的内容没有简单的组合键,那么编写脚本的简单方法是什么?

考虑到这一点,当然if语句的条件可能跨越多行,因此可能需要一个脚本来完全捕获它。但是,对于我的代码,只删除第一行和最后一行将捕获95%的案例。

3 个答案:

答案 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 _