在Vim中的一行字符之前立即移动光标
说我有以下几点:
text function(contents) text
我希望它是
text function() text
将光标放在左括号之后,我认为以下命令会起作用df);然而,我最终得到的是以下内容
text function( text
所以我需要以某种方式在右括号之前指定我想要的字符,但我不知道该怎么做。也可能有更好的方法来做到这一点。
解决这个问题的最佳方法是什么?
回答
你很接近!你需要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)
当括号(或引号)在不同的行上时,这种方式也适用。例如,当光标位于 之间时{},doingdi}会改变这一点:
function( args ) {
body of function
}
对此:
function( args ) {
}