Понимание Vim. Функция повтора
22 марта 2023 г.Vim — это мощный многофункциональный текстовый редактор. которые могут сделать вашу работу с кодом быстрее и эффективнее. Он поставляется с множеством встроенных функций, которые упрощают повседневные действия (: встроенная справка).
Мы рассмотрим одну из них: встроенную функцию repeat (: help repeat), который повторяет выражение a заданное количество раз и возвращает объединенный результат.
Он имеет следующий синтаксис:
repeat({expr}, {count})
Мы рассмотрим 2 важных случая, когда функция может пригодиться:
* повтор() в командной строке * Repeat() в режиме вставки
Повторить в командной строке
Давайте посмотрим, как использовать функцию repeat() в контексте переменных в командной строке.
:let separator = repeat('-', 100) # set the variable
:echo separator # echoes separator
Когда выражение представляет собой список, оно объединяется заданное количество раз:
:let names = repeat(['michael', 'joseph'], 3) # expr is a list
:echo names # echoes names
Функцию также можно использовать как метод:
:echo [1, 2, 3]->repeat(2) # use repeat as a method
Если вам нужно вставить некоторые данные, хранящиеся в переменных, вы можете использовать :put, чтобы вставить их после курсора (:help :put)< /p>
:let names = repeat(['michael', 'joseph'], 3)
:put =names->string()
Я хотел бы отметить, что мы преобразовали результат в имена строк ->string(), чтобы вставить его в виде списка в одну строку.
Если вы удалите ->string(), каждый элемент списка будет находиться на отдельной строке.
Повторить в режиме вставки
При работе с кодом нам часто приходится повторять некоторые выражения или заполнять структуры некоторыми данными.
Давайте посмотрим, как мы можем использовать repeat() в режиме вставки. Когда вы находитесь в режиме вставки:
<C-r>=repeat('[]', 10)<CR>
Это означает: нажмите Ctrl-r, введите =repeat('[]', 10), нажмите Enter
Мы добавили '[][][][][][][][][][]'
и остались в режиме вставки.
repeat(range(5), 3)->string() # repeats [0, 1, 2, 3, 4] three times
string(repeat(range(5), 3)) # use built-in string()
repeat(tempname() . ': ', 3)->string()
tempname() # generates a temporary file name that doesn't exist
. # concatenate two strings
Встроенная функция repeat() делает работу с кодом быстрой и удобной, особенно в режиме вставки. Это избавляет нас от переключения между разными режимами, что увеличивает общую скорость потока. Благодаря множеству встроенных функций Vim вы можете генерировать данные различных типов для {expr} в широком диапазоне. Запустите функцию и сделайте свою жизнь проще.
Оригинал