在 Vim 中的一行字符之前立即移动光标

Kal*_*fer 0 vim neovim

说我有以下几点:

text function(contents) text
Run Code Online (Sandbox Code Playgroud)

我希望它是

text function() text
Run Code Online (Sandbox Code Playgroud)

将光标放在左括号之后,我认为以下命令会起作用df);然而,我最终得到的是以下内容

text function( text
Run Code Online (Sandbox Code Playgroud)

所以我需要以某种方式在右括号之前指定我想要的字符,但我不知道该怎么做。也可能有更好的方法来做到这一点。

解决这个问题的最佳方法是什么?

mat*_*ttb 5

你很接近!你需要dt)像在deletet生病)

f议案将光标上)(记得好像fIND)

至于“最好”的方法,至少有一种更通用的方法:如果光标位于()(或其中之一)中间的某个位置,您可以di)(或等效地di()执行delete inside)

如果您这样做da)(或等效地da(delete around ),您将删除中间的内容并包括括号。

这同样适用于di[di{di<di'di"等。使用这些所谓的文本对象,而不是在d{motion}方式的优点是可以重复编辑的其他对括号/引号,而不需要光标将在完全相同地方 - 它只需要在它们之间或它们之间。

在下面,您可以将光标定位在例如第一行“initial”的“i”上,di)删除单词“some initial text”,然后将光标移动到第二行“more”中的“e”行并.删除“更多文本”字样):

(some initial text)

(some more text)
Run Code Online (Sandbox Code Playgroud)

当括号(或引号)在不同的行上时,这种方式也适用。例如,当光标位于 之间时{},doingdi}会改变这一点:

function( args ) {

    body of function

}
Run Code Online (Sandbox Code Playgroud)

对此:

function( args ) {
}
Run Code Online (Sandbox Code Playgroud)