如何尽快删除一个段落

guo*_*987 4 linux vim

我想删除我的配置文件中的以下代码:

server {
    listen 80;
    server_name xxx;
    location / {
        try_files xx;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用7dd,但这还不够方便 - 如果该部分太长,计算行数会很不方便。

有一个更好的方法吗?

有时,我必须删除整个函数,对此有何想法?

Pri*_*ash 5

如果这些行之后紧跟着有一个空行,Vim 会将其识别为一个段落,因此您可以简单地使用d}删除它(假设光标在第一行)。


Dav*_*ain 5

和 Vim 一样,有很多方法!

请注意,前两个解决方案取决于块中是否不存在空行。

  • 如果您的光标在该server行上,请尝试d}。它将删除下一个块的所有内容。

  • 在条目本身内,dap将删除“段落”。

  • 您可以使用 删除花括号块da}。(如果您喜欢这种语法,我推荐 Tim Pope 的出色的around.vim,它添加了更多具有类似感觉的功能)。

  • 您还可以尝试使用正则表达式删除直到下一个最左侧缩进的右花括号: d/^}Enter

  • ]][[移动到下一个/上一个第一列花括号(相当于使用/?使用我上面提到的那个正则表达式。结合d运动,你会得到同样的效果。

  • 如果您在一个块之下,您还可以利用 Vim 搜索的方便的“偏移”功能。d?^{?-1将向后删除到第一列左花括号第一次出现之前的一行。这个命令的输入有点棘手。也许你可以用<leader>它做一条捷径。

请注意,此答案的大部分内容取自我之前就类似主题给出的答案


imm*_*imm 2

尝试使用带有 % 的视觉模式。

例如,假设您的光标位于“server”行的开头。

按 v 进入可视模式。按 % 突出显示到块的末尾。按 d 将其删除。