@@
と入力すると、最後の@コマンドが実行されます。しかし、誰もが@@
は(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
のリストにありません。私はそれがyanking /削除のためのデフォルトのレジスタだと思いますコードを読んでから?これはどこに文書化されていますか?すべての検索で、最後の@コマンドを実行するイディオム@@
が得られます。
'@@'には、スターウォーズのAT-ATウォーカーが格納されています。 :P – FrustratedWithFormsDesigner
興味深い。これは、ヤンクや友人が使用するデフォルトのレジスタのようですが、これについてのドキュメントは見つかりません。見知らぬ人はまだ '@@'コマンドに接続されていないようです。通常は、レジスタに何かをヤンクすることができます(例えば、 '' zy [モーション] ''が '' z ''になっている)し、キーストローク( '@ z')として"再生 " 'register。それは特別なケースです!レジスタを再生しても、yankとputで使用されるデフォルトのレジスタを上書きしないのは良いことだと思いますが、vimの動作にこのような不規則性があることは間違いです。 –