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

jpi*_*ard 4 vim

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

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

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

Pet*_*ker 7

可能解决方案

yiBvaBVpgv<
Run Code Online (Sandbox Code Playgroud)
  • yiB 猛拉内部块
  • vaBV 通过选择一个块,然后按行选择它
  • p 粘贴在视觉选择的文本上
  • gv< 重新选择文本和去缩进

环绕像映射也删除周围的块:

nnoremap dsB yiBvaBVpgv<
Run Code Online (Sandbox Code Playgroud)

ib提供了一个更短的解决方案 该解决方案将发生变异的可视标记:'<,'>

diB]pkdk
Run Code Online (Sandbox Code Playgroud)
  • diB 删除当前内部块
  • ]p 将新删除的文本粘贴到块的末尾下方,但调整缩进.
  • kdk 向上移动一行然后删除2行,从而删除块的开始和结束.