gpt4 book ai didi

vim - 表达式寄存器的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 11:08:00 27 4
gpt4 key购买 nike

刚看完 http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-advanced-tutorial-videos/#expression-register ,我看不出使用 <c-r>= 有什么好处对比 <c-o>normal或类似的东西(虽然我确定那只是因为我不理解某些东西)

最佳答案

它有很多有趣的用途,很多很多。在德里克的视频中,它被用来调用
外部脚本。关键是你可以在不离开插入的情况下做到这一点
模式。你说你看不到好处超过<c-o> ,但你会怎么做?

表达式寄存器插入表达式的结果。你不需要:call例如一个函数,如视频所示。我会尝试展示
你还有两个我觉得有趣并且经常使用的用途。

1.评估数学

表达式 2计算结果为 2,对吗(就像在 VimScript 中一样)?所以你可以使用
表达式寄存器插入一些数字作为计算结果。为了
例如,考虑到您在此文件中处于插入模式:

... the total sum is $

现在打 <c-r>=并输入
5*6+3.2*8+5.52<enter>

结果是:
... the total sum is $61.12

实用吧?

2.使用变量值

假设您需要对文本中的标题进行编号。标题以 # 开头喜欢
在:
# Heading

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.

# Another Heading

Consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

考虑到这是一个很长的 list ,您需要找到一种快速完成的方法。这是
一种方法:
  • 创建一个变量来保存当前值
  • 查找下一个标题
  • 插入该变量的内容(使用表达式寄存器)
  • 增加变量

  • 这可以通过首先创建变量来完成:
    :let i=1

    然后用一个宏:
    qa            ; start recording
    /^#<CR> ; find next heading
    0w ; move to the first word
    i ; switch to insert mode
    <c-r>=i<CR> ; insert the number
    .<esc> ; insert a dot and back to normal mode
    :let i+=1<CR> ; increment the variable
    q ; stop recording

    现在您可以按 @a并使用 @@随后将数字插入
    你的标题。

    关于vim - 表达式寄存器的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7027741/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com