Я знаю это, набрав @@
Выполняю последнюю команду @. Но может ли кто-нибудь объяснить, что @@
в коде ниже (находится в 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
. Из чтения кода я бы предположил, что это регистр по умолчанию для yanking/deleting? Является ли это документированным где угодно? Все мои запросы просто дают @@
идиом, который выполняет последнюю команду @.
`@@` хранит ходунки AT-AT от Star Wars. : P – FrustratedWithFormsDesigner 2010-12-15 21:35:40
Интересно. Кажется, это регистр по умолчанию, используемый yank и друзьями, но я не могу найти документацию об этом. По-прежнему незнакомец, похоже, что он вообще не подключен к команде `@@`. Обычно вы можете что-то записывать в регистр (например: `` zy [motion] `yanks в z), а затем« воспроизводить »его как нажатия клавиш (` @ z`), но `@@` не воспроизводит содержимое `@ `register.Это особый случай! Я полагаю, что хорошо, что повторное воспроизведение регистра не перезаписывает регистр по умолчанию, используемый yank и put, но это немного смущает, что в поведении vim существует такая неравномерность. – 2010-12-15 21:44:35