【问题标题】:VIM better way to replace line from the first symbolVIM 从第一个符号替换行的更好方法
【发布时间】:2011-04-01 11:48:59
【问题描述】:

有代码:

[Test]
public void ShouldDoSomethingMeaningFull() {
    Assert.Fail();
}

我经常需要覆盖第 (3) 行 Assert.Fail();。我目前做的是这样的:

  1. 转到该行3G
  2. 选择从第一个非空格 ^v$ 开始的所有内容。
  3. 更改它 - c

整个序列是:3G^v$c

虽然这对我有用,但它不是有效的方法,因为我的手指会跳到 ^ 和 $。

有更好的方法吗?

谢谢,
德米特里。

【问题讨论】:

  • 这不是一个真正的编程问题。这是一个 vi 问题,或者更一般地说,一个“我如何使用一个软件”的问题。投票发送给超级用户(尽管这篇文章有点旧)。
  • VIM 不仅仅是一个“软件”。它是一个程序员工具。最好的证明是 StackOverflow 上“VIM”问题的数量。

标签: vim text-editor vi


【解决方案1】:

3GC - 对我来说最有意义。比必须进入视觉模式更容易。

【讨论】:

    【解决方案2】:

    明显的改进是3GC(C表示换行,即与3Gc$)

    如果您更喜欢按照 Pavel Shved 所指出的那样更改整行,那么也有一个不太明显的捷径。 3GS3Gc kbd>c.

    帮助文件的“进行小改动”部分有更多详细信息。

    【讨论】:

    • 不错。我会尝试自己使用它。
    • 不错,前提是G 总是跳到行中的第一个非空白位置(看起来确实如此)。
    【解决方案3】:

    我喜欢使用S,它会删除行并将您置于插入模式,同时保留缩进。虽然C 也可以工作,但S 可以在行中的任何位置工作。

    【讨论】:

    • 不幸的是,这不起作用,因为S 将光标放在行首(第一列)并且不会将其设置为第一个非空白字符。
    • @Dmitriy Nagirnyak - 它应该适用于您在上面发布的语法。尝试开启 c 缩进: :set cin
    【解决方案4】:

    正确的组合键应该是 3Gcc

    cc 将替换整行(与 C 相反,它只替换从当前字符开始),并将保留空格在行首。

    【讨论】:

    • 不错的一个。我猜ccC(由Brian Rasmussen 建议)是一样的。
    • @Dmitriy,它是一样的,除非设置了startofline,这使得G 保留该列。我个人更喜欢设置它。
    • C 将从当前字符替换到末尾。 cc 将替换整行,无论光标位置如何。
    • 另外C 会将光标留在当前位置,而cc 将光标放在第一列(因为该行不是空白)。
    • ccS 仅在 autoindent 开启时保留缩进,如果您正在编辑代码,它可能是。
    【解决方案5】:

    对我来说,这样做会更快:

    3GddO
    

    转到第 3 行 3G,删除该行 dd,并在当前行上方插入一行(现在是右大括号)O

    【讨论】:

    • 在某些终端 (bugs.kde.org/show_bug.cgi?id=169396) 上使用 O 可能有问题。我认为,应该考虑一个更好的选择。
    • 这就是我将它提交给 KDE bugzilla 的原因。 ;-)
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2012-04-25
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多