Одна из моих любимых частей о регистрах - использовать их как макросы!
Допустим, вы имеете дело с файлом значений с разделителями табуляции следующим образом:
ID Df %Dev Lambda
1 0 0.000000 0.313682
2 1 0.023113 0.304332
3 1 0.044869 0.295261
4 1 0.065347 0.286460
5 1 0.084623 0.277922
6 1 0.102767 0.269638
7 1 0.119845 0.261601
Теперь вы решаете, что вам нужно добавить знак процента в конце поля% Dev (начиная со 2-й строки). Мы сделаем простой макрос в (произвольно выбранном) m
регистре следующим образом:
Нажмите:: qm
для начала записи макроса в m
регистр.
EE
: Перейти к концу 3-го столбца.
a
: Режим вставки, чтобы добавить в конец этого столбца.
%
: Введите знак процента, который мы хотим добавить.
<ESC>
: Вернуться в командный режим.
j0
: Перейти к началу следующей строки.
q
: Остановить запись макроса
Теперь мы можем просто напечатать @m
этот макрос для текущей строки. Кроме того, мы можем напечатать @@
повторить или 100@m
сделать это 100 раз! Жизнь выглядит довольно хорошо.
В этот момент вы должны сказать: « НО ПОДОЖДИТЕ, ЧТО ТАКОЕ ЭТО СДЕЛАНО С РЕГИСТРАМИ ?»
Отличный момент. Давайте исследуем, что находится в содержимом m
регистра, набрав "mp
. Затем мы получаем следующее:
EEa%<ESC>j0
Сначала это выглядит так, как будто вы случайно открыли двоичный файл в блокноте, но на второй взгляд, это точная последовательность символов в нашем макросе!
Вы любопытный человек, поэтому давайте сделаем что-нибудь интересное и отредактируем эту строку текста, чтобы вставить !
вместо скучного старого %
.
EEa!<ESC>j0
Тогда давайте вставим это в n
регистр, набрав B"nyE
. Тогда, просто для пика, давайте запустим n
макрос в строке наших данных, используя @n
....
Боже мой, он добавил !
По сути, запуск макроса подобен нажатию точной последовательности клавиш в регистре этого макроса. Если это не крутой трюк, я съем свою шляпу.