如何尽快删除段落

时间:2012-08-07 06:03:16

标签: linux vim

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

server {
    listen 80;
    server_name xxx;
    location / {
        try_files xx;
    }
}

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

有更好的方法吗?

有时候,我必须删除一个完整的功能,对此有任何想法吗?

5 个答案:

答案 0 :(得分:4)

与Vim一样,有很多方法!

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

  • 如果光标位于server行,请尝试 d } 。它会将所有内容删除到下一个区块。

  • 在条目本身中, d a p 将删除“段落”。

  • 您可以使用 d a } 删除卷曲的括号块。 (如果您喜欢这种语法,我推荐Tim Pope的精彩surround.vim,它会增加更多具有类似感觉的功能。)

  • 您还可以尝试使用正则表达式删除,直到下一个左下方缩小的大括号: d / ^ } 输入

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

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

请注意,此答案的大部分内容来自previous answer I gave类似主题。

答案 1 :(得分:2)

尝试使用%。的可视模式。

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

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

答案 2 :(得分:2)

如果这些行后面有一个空行,Vim会将其标识为段落,因此您只需使用d}删除它(假设光标位于第一行)。

答案 3 :(得分:1)

根据匹配的parens或大括号,您可以%使用d删除,跨越行。

因此,假设您在server {行,您可以d%。这通常适用于所有代码块,例如功能块,循环块,尝试块。

同样,dip有效,但d}更短。但是,两者都只会删除到下一个空行。

答案 4 :(得分:1)

大卫说他们的方式很多。以下是我喜欢的一些内容:

  1. Vf{%d这假设您在server行,并且您进行了视觉线选择,找到{,然后通过{找到匹配的} {1}}命令。
  2. %set relativenumber简称。这将打开相对于光标的行号。因此,您无需计算线条,只需查看set rnu即可删除您的区块。
  3. 使用7dd直观地选择一个块,即VaB{。在仍处于可视模式时,继续执行},直到选择了正确的块,然后执行aB。这意味着您可以从块内部而不是在开头或结尾处选择一个块。
  4. d会删除一个段落。这适用于您当前的场景,因为块内没有空行。如果有,则所有投注均已关闭。虽然您可以继续按d},直到该块被正确删除。
  5. 如果在一个区块内,您可以通过.跳转到当前区块,然后继续执行[{,直到您处于正确的区块,然后[{V%d删除块
  6. 使用上述技巧,您也可以删除某个功能,但您也可以使用d%dd和朋友([M[m]m)跳转到方法的开始和结束,但它们通常也适用于函数。

    了解更多信息

    ]M