【问题标题】:Line dependency in VimVim 中的行依赖
【发布时间】:2012-06-05 15:40:16
【问题描述】:

我正在考虑一个功能 [将其命名为行依赖],它可能对 Vim 和其他编辑器有用。

什么是行依赖?

S 是当前缓冲区中一组完全相同的行号。一个子集S'(属于S)被标记为依赖意味着对S' 中任何一行l 的任何更改都会反映在所有S' 中。

S' 会根据缓冲区中的更改进行更新,即可以将行追溯到它们的初始点。

用例:自动复制多行更改而不记录宏。

在 Vim 中可以做到这一点吗?实施这个想法有什么固有的困难吗?这个想法有什么根本缺陷吗?

【问题讨论】:

  • 主要缺陷是代码重复应该通过重构而不是编辑器宏来解决,以使代码更易于阅读。如果你一遍又一遍地写相同的行,你就会遇到设计问题。
  • 如果编辑器的唯一目的是只编写代码,则为真。可能存在其他可能需要此类功能的情况。例如,考虑乳胶文件中缓冲区的两个区域[而不是限制为行]的依赖b/w。在一个区域中所做的更改会自动复制到另一个区域中。我发现此功能在编写包含大量方程式的证明时很有用。
  • 嗯,是的,这听起来很合理。虽然 LaTeX 本身有一个非常强大的宏工具......
  • 多游标能解决问题吗? github.com/terryma/vim-multiple-cursors
  • @Alex 我没试过,但 gif 看起来很有希望 :) 感谢分享。

标签: vim editor vi


【解决方案1】:

插件vim-multiple-cursors 可以帮助同时编辑多个相同的文本部分。希望这是您正在寻找的。​​p>

【讨论】:

    【解决方案2】:

    在 Vimscript 中,您可以通过 CursorMovedI 事件挂钩“源”行的修改,但通过普通模式 (p) 和 Ex 命令 (:put) 对修改做出反应更难,可能通过 @987654322 @延迟后。

    要在上面有插入/删除时跟踪行,可以使用标记,但只有 26 个。

    可以通过setline() 轻松“克隆”行更新。

    一般而言,在 Vimscript 中执行此操作并不完美且难以实现。将此添加到核心 Vim 需要深入了解 Vim 内部结构和源代码,并且不太可能被 Vim 的维护者接受。仔细想想这是否真的值得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 2014-07-26
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多