刚刚观看了这个http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-advanced-tutorial-videos/#expression-register,我无法看出使用<c-r>=
相较于<c-o>normal
或类似命令的任何优势(虽然我确信这仅仅是因为我不理解某些东西)
刚刚观看了这个http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-advanced-tutorial-videos/#expression-register,我无法看出使用<c-r>=
相较于<c-o>normal
或类似命令的任何优势(虽然我确信这仅仅是因为我不理解某些东西)
<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
实用,是吧?
假设你需要在文本中给标题编号。标题以 #
开头,如下所示:
# 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
,然后使用@@
来随后插入标题中的数字。
<C-r>=618+27<CR>
,在处理CSS时非常有用。
<c-o>:normal system('script')
这样的东西,但再想一想,这只会调用脚本而不会插入结果。<c-o>r!script
可以工作,但正如你所说,这更多是关于任意的 VimL 而不是执行外部命令。非常好的答案,谢谢 :) - Matt Briggs