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

只是看了这个 http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-advanced-tutorial-videos/#expression-register,我看不到使用< c-r> = vs< c-o>正常或类似的东西(虽然我确信这仅仅是因为我不了解某些东西)
它有很多有趣的用途,很多。在德里克的视频中,它被用来呼叫
外部脚本。关键是你可以做到这一点,而不用插入
模式。你说你没有看到< c-o>的好处,但你会怎么样?

表达式寄存器插入表达式的结果。你不需要
:如视频所示,调用一个功能,例如。我会尝试展示
你另外两个使用,我觉得有趣,并经常使用。

评估数学

表达式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

考虑到这是一个长列表,您需要找到一种快速做到这一点的方法。这是
一种方法:

>创建一个变量来保存当前值
>查找下一个标题
>插入该变量的内容(使用表达式寄存器)
>增加变量

这可以通过首先创建变量来完成:

: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并使用@@随后插入数字你的标题

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...