Vim - 删除多行中的某个字符(包括该字符本身)

24

我有这段代码:

def foo(c: Char) = c match {
    case 'a': 'B'
}

我的光标在=后的空格上。我想删除包括}在内的所有内容。怎样做?

如果光标在第一行的任何位置,我可以做同样的操作吗?如果在代码块中的任何位置(并将光标放置在=之后),我也可以这样做吗?


3
“v”→“j”→“j”→“d”可能会起到作用。 - yakiang
4个回答

39
d/}/e

工作正常。

d/} 命令会删除直到匹配 } 的内容,但是添加 /e 标记将光标移动到匹配字符的最后一个字符,实际上删除光标和匹配字符之间的所有内容,包括匹配字符本身。

使用可视选择也可以,而且更加直观:

v/}<CR>d

2
IntelliJ IDEA vim 插件似乎无法使用 /e 命令。 - steinybot
5
关于 Vim 的问题。 - romainl
这是一个vim命令还是快捷键?因为d}快捷键会删除一个段落,而:d/}/e并没有实际作用。 - codeScriber
1
在Vim中没有“shortkey”的概念。d}是一个操作符,d代表“删除”,后面跟着一个动作,}代表“到当前段落的结尾”:它会删除光标和}之间的所有内容。d/}/e是相同的操作符d,后面跟着不同的动作/}/e,表示“搜索下一个}并将光标停留在}上”。 - romainl

27
尝试使用这个:d%d表示删除,%在花括号之间移动。

6
这应该可以运行:
d}

这将删除一个段落向前的内容。


-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接