什么是vim的@@变量?

Pau*_*rth 6 vim

我知道通过键入@@我执行最后一个@命令.但任何人都可以解释@@下面代码中的内容(在vim帮助文件中找到)?:

function! CountSpaces(type, ...)
  let sel_save = &selection
  let reg_save = @@

  if a:0
    silent exe "normal! `<" . a:type . "`>y"
  elseif a:type == 'line'
    silent exe "normal! '[V']y"
  elseif a:type == 'block'
    silent exe "normal! `[\<C-V>`]y"
  else
    silent exe "normal! `[v`]y"
  endif

  echomsg strlen(substitute(@@, '[^ ]', '', 'g'))

  let &selection = sel_save
  let @@ = reg_save
endfunction
Run Code Online (Sandbox Code Playgroud)

它似乎是一个寄存器,但它不在列表中:help registers.从读取代码我猜它是yanking/deletion的默认寄存器?这记录在哪里?我的所有搜索只会产生@@执行最后一个@命令的习惯用法.

Ren*_*ger 12

:help @r 给我

register                        *expr-register* *@r*
--------
@r          contents of register 'r'

The result is the contents of the named register, as a single string.
Newlines are inserted where required.  To get the contents of the unnamed
register use @" or @@.  See |registers| for an explanation of the available
registers.
Run Code Online (Sandbox Code Playgroud)

因此,@@将有一个删除的文本的价值d,c,s或者x命令,或者用猛拉文本y命令.