将光标移动到 Vim 中一行字符的紧前面

Move Cursor Immediately Before a Character on a Line in Vim

假设我有以下内容:

text function(contents) text

我希望它是

text function() text

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

text function( text

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

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

你很接近!你需要 dt)delete till )

f 动作将光标放在 ) 上(像 find 一样记住它)

至于 'best' 的方法,至少有一种更通用的方法:如果 光标在 () 中间的某处(或其中之一),你 可以 di)(或等同于 di()到 delete inside )

如果你da)(或相当于da()到delete around ),你会 删除中间的内容,包括括号。

di[di{di<di'di"等也是如此。使用这些所谓的 与 d{motion} 方式相反,文本对象的优点是您可以 对其他 brackets/quotes 对重复编辑,而不需要光标 完全在同一个地方 - 它只需要在它们之上或之间。

在下文中,您可以将光标定位在例如'initial' 中的 'i' 第一行,执行 di) 删除单词 'some initial text',然后移动 将光标移至第二行 'more' 中的 'e' 并执行 . 也删除 单词 'some more text'):

(some initial text)

(some more text)

当括号(或引号)位于不同行时,这种方式也适用。为了 例如,光标位于 {} 之间的某处,执行 di} 将改变 这个:

function( args ) {

    body of function

}

对此:

function( args ) {
}