【问题标题】:Paste the content from dot . command in vim粘贴 dot 中的内容。 vim中的命令
【发布时间】:2018-12-31 13:30:10
【问题描述】:

给定文本中的单词foo,如果我在w寄存器中将其记录为宏时键入ciwbar<ESC>,然后在命令行中键入 :<C-r>w 它会带给我:ciwbar^[

但是,如果我输入:<C-r>.,它只会给我带来bar

但是@wdot 这两个命令都能够在我的文本的其他部分执行更改内部单词栏

当我获得w 寄存器时,有什么方法可以从点中获取所有内容?我想粘贴它并在一些步骤中自动执行宏中的最后一个命令

【问题讨论】:

    标签: vim vim-registers


    【解决方案1】:

    . 寄存器和. 命令不是一回事。 . 寄存器存储您插入的最后一个文本,. 命令重复您执行的最后一个非移动正常模式命令。

    与其试图强迫它以另一种方式工作,为什么不调用不同的注册表并在其中存储值呢? . 注册表将被最后插入的文本覆盖,但许多其他注册表只有在您主动告诉 vim 时才会更改,因此您可以自己填写所需的确切按键并稍后再次调用它们。

    类型

    :reg
    

    查看每个注册表中当前内容的列表

    还可以看看这个解释 vim 寄存器的精彩资源
    https://www.brianstorti.com/vim-registers/

    【讨论】:

    • 很高兴知道,我不想知道. 命令和注册中的这种差异;但在解决这个问题之前,我会再等一会儿,看看是否有办法将 dot 内的命令作为字符串获取。
    • @intmarinoreturn0 输入 q. 并注意 vim 不会开始在点寄存器中记录宏。
    • @intmarinoreturn0 在我发送的链接中,brianstorti.com/vim-registers 你会看到点寄存器属于 4 个“只读寄存器”。宁可忘记将命令输入点寄存器并使用其他 52 个(a-z 和 A-Z)寄存器之一来存储您所持有的文本。使用点寄存器保存插入的最后一段文本,未命名寄存器 ("") 用于保存最后被拉出或删除的文本,0-9 用于最后 9 次拉出。请问你为什么要使用点寄存器?
    • 好吧,我每天打开一些配置文件并进行一些更改,最后的更改是通过 dot 命令获得的,我想写一个脚本,用于在关闭 vim 时,能够存储一个字符串自动为该命令(例如:ciwbar^[)以供进一步使用。使用宏我必须在一系列命令/动作之间显式开始录制,并在我认为完成时停止录制,但是 dot 命令会自动获取最后的“原子”更改,我想坚持下去。编辑时我的直觉无法判断的一件事是它是否是“原子”更改,只有在完成后才能知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2021-01-31
    • 2011-04-29
    • 2011-05-17
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多