У него много интересных применений, много много.В видео Дерека он использовался для вызова внешнего сценария.Дело в том, что вы можете сделать это, не выходя из режима вставки.Вы сказали, что не видите преимуществ по сравнению с <c-o>
, но как бы вы к этому пришли?
Регистр выражений вставляет результат из выражения.Например, вам не нужно :call
функцию, как показано на видео.Я попытаюсь показать вам еще два использования, которые я нахожу интересными, и часто использую.
1. Оценка математики
Выражение 2
оценивается как 2 справа (как в VimScript)?Таким образом, вы можете использовать регистр выражений для вставки некоторых чисел в результате вычисления.Например, учитывая, что вы находитесь в режиме вставки в этом файле:
... the total sum is $
Теперь нажмите <c-r>=
и введите
5*6+3.2*8+5.52<enter>
И результат будет:
... the total sum is $61.12
Практично, а?
2.Использование переменных значений
Допустим, вам нужно нумеровать заголовки в тексте.Заголовки начинаются с #
, например:
# Heading
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
# Another Heading
Consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
Учитывая, что это длинный список, вам нужно найти способ сделать это быстро.Вот один из подходов:
- Создать переменную для хранения текущего значения
- Найти следующий заголовок
- Вставить содержимое этой переменной (используя регистр выражений)
- Увеличение переменной
Это можно сделать, сначала создав переменную:
:let i=1
А затем с помощью макроса:
qa ; start recording
/^#<CR> ; find next heading
0w ; move to the first word
i ; switch to insert mode
<c-r>=i<CR> ; insert the number
.<esc> ; insert a dot and back to normal mode
:let i+=1<CR> ; increment the variable
q ; stop recording
И теперь вы можете нажать @a
и использовать @@
, чтобы впоследствии вставить цифры в заголовки.