【问题标题】:Vim: delete to next character, when next character is not on same lineVim:当下一个字符不在同一行时,删除到下一个字符
【发布时间】:2012-09-26 21:46:05
【问题描述】:

我确定我会因为提出重复的问题而受到嘲笑;之前一定有人问过这个问题!但是在一个小时的搜索中我还没有找到它。我一定是在寻找错误的东西。

在 Vi(或 Vim)中,我可以通过键序列 dt}(或 df},如果我也想删除括号)删除直到 } 字符的所有字符。

但是,这仅在 } 字符位于当前行时才有效。我想要做的是删除直到下一个} 的所有内容,即使它第一次出现在后续行。

我在想d/} 之类的东西(在任何其他上下文中,斜线/}<enter> 会将我带到下一个出现的})。出于显而易见的原因,这不起作用,但我希望意图很明确。

== 编辑 ==

好吧好吧好吧……对不起。没关系,它确实有效(在我的全新安装机器上)。可能是配置文件中的一些混乱映射,但它不适用于我的另一个。

羞愧地低着头

【问题讨论】:

  • 你真的试过了吗?因为它对我来说很好用。
  • 我当然试过了!!什么适合你?
  • 有哪些“明显的原因”会导致它失败?你的 vim 上的行为是什么?
  • 你的版本是什么?我的是 7.3.46,这可能在早期版本中不可用。
  • 不适合我,哪个配置搞砸了?

标签: vim


【解决方案1】:

d/}<cr> 有效。这是删除直到下一个不在同一行的} 的规范方法。顺便说一句,d?{<cr> 的作用相同,但方向相反。

【讨论】:

  • <cr> 是什么意思?
  • :help key-notation
【解决方案2】:

这个plugin 应该可以为您节省一些按键操作。它扩展了 fFtT 的功能;所以他们跨行工作。

【讨论】:

    【解决方案3】:

    如果字符是}{ 放置在行首,一种方法是使用文本对象动作,所以像d]] 这样的命令也很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 2020-10-05
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多