我想在配置文件中删除以下代码:
server {
listen 80;
server_name xxx;
location / {
try_files xx;
}
}
我知道我可以使用 7 d d ,但这不够方便 - 如果部分太长,计算行数会不方便。
有更好的方法吗?
有时候,我必须删除一个完整的功能,对此有任何想法吗?
答案 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)
大卫说他们的方式很多。以下是我喜欢的一些内容:
Vf{%d
这假设您在server
行,并且您进行了视觉线选择,找到{
,然后通过{找到匹配的}
{1}}命令。%
或set relativenumber
简称。这将打开相对于光标的行号。因此,您无需计算线条,只需查看set rnu
即可删除您的区块。7dd
直观地选择一个块,即VaB
到{
。在仍处于可视模式时,继续执行}
,直到选择了正确的块,然后执行aB
。这意味着您可以从块内部而不是在开头或结尾处选择一个块。d
会删除一个段落。这适用于您当前的场景,因为块内没有空行。如果有,则所有投注均已关闭。虽然您可以继续按d}
,直到该块被正确删除。.
跳转到当前区块,然后继续执行[{
,直到您处于正确的区块,然后[{
或V%d
删除块使用上述技巧,您也可以删除某个功能,但您也可以使用d%dd
和朋友([M
,[m
,]m
)跳转到方法的开始和结束,但它们通常也适用于函数。
了解更多信息
]M