【问题标题】:How to efficiently edit strings after dot in vim如何在vim中有效地编辑点后的字符串
【发布时间】:2015-12-02 18:51:36
【问题描述】:

在 vim 中,我必须将 someText.someTextAfterDot 字符串更改为 someText.somethingDifferent。光标位于After 中的t。最有效的方法应该是什么?

  • 如果我使用“cw”命令,则会删除完整的someText.someTextAfterDot,包括someText,我认为这不是有效的,因为现在我必须再次输入someText。
  • 通常,我使用“F.ce”(查找最后一个 . 并编辑到当前单词的结尾)命令,然后键入 somethingDifferent。这似乎需要很多工作,因为在其他编辑器(如 WebStorm 或 Sublime)中,只需双击 someTextAfterDot 即可。

在 vim 中还有其他更有效的方法吗?

【问题讨论】:

  • 首先cw 应该只前进所以只删除terDot。现在,如果您使用ciw 并且'iskeyword' 包含一个点,那么您的问题在于'iskeyword' 设置。通过执行以下操作找出最后一个位置 'iskeyword'::verbose set iskeyword?
  • @PeterRincker 有这个问题的正确答案

标签: vim editor


【解决方案1】:

首先cw 应该只前进所以只删除terDot。如果cw 正在做更多事情,那么我认为您有一些错误的映射。

“内部”字文本对象iw 是您所需要的。例如ciw。但是,如果您已将. 添加到'iskeyword',则单词将包含.,并且ciw 的行为将不正确。

要找出最后一次设置 'iskeyword' 的位置,请使用以下命令:

:verbose set iskeyword?

如需更多帮助,请参阅:

:h 'iskeyword'
:h iw
:h w
:h cw
:h :verbose

【讨论】:

  • 谢谢彼得!这有帮助。是的!我的错误,我的意思是 ciw 而不是 cw
【解决方案2】:

我的直觉是输入bdeisomethingDifferent。我不知道这是一个很大的改进,但它至少不会像F.ce 那样让你再次输入.。

【讨论】:

    【解决方案3】:

    我通常使用 change inner word。您只需输入

    ciwsomethingDifferent

    也请查看text object selection 的文档。

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多