我知道通過輸入@@
我執行最後的@命令。但是,任何人都可以解釋什麼@@
是在下面的代碼(在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
這似乎是一個寄存器,但它不是在列表中:help registers
。從閱讀代碼我猜想它是延期/刪除的默認註冊?這是記錄在任何地方?我所有的搜索只是產生執行last @命令的成語@@
。
'@@'存放星球大戰中的AT-AT步行者。 :P – FrustratedWithFormsDesigner 2010-12-15 21:35:40
有趣。它似乎是由yank和朋友使用的默認註冊表,但我找不到任何關於此的文檔。更奇怪的是,它似乎並沒有連接到'@@'命令。通常情況下,你可以把某些東西放入一個寄存器中(例如:'zy [motion]'放入z中),然後「重放」它作爲擊鍵('@ z'),但'@@'不會重放'@ '註冊。這是一個特殊的情況!我認爲重播註冊不會覆蓋yank和put所使用的默認註冊是好的,但是令人不安的是vim的行爲存在這樣的不規則性。 – 2010-12-15 21:44:35