Подтвердить что ты не робот

Что означает <c-r >= в Vim

Я столкнулся с рядом синтаксических понятий, которые я не понимаю:

Первое находится в: help mapping:

:map <F2> a<C-R>=strftime("%c")<CR><Esc>

Эта последовательность действительно вставляет значение strftime в буфер, хотя я не понимаю, как это сделать. Переход на что-то другое нарушает его.

Другой - на странице wiki где описывается, как всплывающее меню omnicompletion работает хорошо:

inoremap <silent> <Esc> <C-r>=pumvisible() ? "\<C-y>" : "\<Esc>"<CR>

То же самое здесь.

Может ли кто-нибудь объяснить, как это работает "<C-r>="?...

4b9b3361

Ответ 1

<C-r>=, или Ctrl + R = используется для вставки результата выражения в курсор.

Я использую его при редактировании CSS для вставки значений:

width: <C-r>=147-33<CR>px;
width: 114px;

ИЗМЕНИТЬ

<C-r>, без =, позволяет вставлять содержимое любого регистра в курсор во время пребывания в режиме вставки: <C-r>+, например, вставляет содержимое моего системного буфера обмена. см. :help i_ctrl_r.

= является "регистром выражений". См. :help "=.

EndEdit

Ответ 2

<C-r> похож на выполнение CTRL + R на клавиатуре. <CR> похоже на нажатие кнопки ввода. Вы можете найти полный список, выполнив :help key-notation.