Что такое регистры Vim

Cto Takoe Registry Vim



Регистры Vim — это блоки хранения, используемые для хранения извлеченного, удаленного текста и операций. Доступ к этим регистрам можно получить, используя их имена тегов, которые могут быть числом, буквой или символом.

Если вы используете Vim, вы должны использовать регистры Vim. Каждый раз, когда вы копируете/удаляете текст или выполняете командную операцию, Vim сохраняет эту информацию в регистрах. Когда вы вставляете его, Vim получает данные из регистра и рисует их в буфер. Другими словами, регистры Vim действуют как буфер обмена для хранения текста и истории команд.

Всего в Vim имеется 10 различных типов регистров, каждый из которых служит определенной цели. В этом уроке я буду изучать регистры Vim, их типы и использование.







Примечание : В этом уроке я выполняю команды в macOS. Vim — кроссплатформенное приложение, поэтому команды, упомянутые в этом руководстве, применимы ко всем версиям Vim, независимо от операционной системы.



Операторы регистрации Vim

Регистры в Vim можно использовать с помощью таких операций, как копирование, удаление или изменение. Каждая операция имеет определенные операторы, например, для извлечения текста используется оператор y, а для удаления текста используется оператор d. Список часто используемых операторов приведен ниже:

ууу Янки (копирует) строку
дд Удаляет строку
копия Удаляет строку и включает режим INSERT.
с Удаляет символ и запускает режим INSERT для замены.
Икс Удаляет символ под курсором
q Макро; сохраняет набор команд в определенном регистре

Чтобы распечатать сохраненный текст, п или п используются операторы:

п Поместите (вставьте) текст после курсора
п Поместите текст перед курсором

Эти команды также выполняют подсчет. Например, чтобы скопировать 10 строк, используйте команду 10гг Аналогично, чтобы вставить 10 копий выдернутой строки, используйте 10 пенсов .

Листинговые регистры

Чтобы просмотреть все регистры, используйте команду :регистр или :рег команду, а для просмотра конкретного регистра используйте команду :рег «, где — имя регистра (например, 0–9, a–z).

Таким же образом, чтобы просмотреть содержимое нескольких регистров, используйте команду :reg “ команда.

В списке регистров вы увидите три столбца: Имя, тип и содержание . Здесь Тип означает тип контента, а не тип регистра. Три типы содержимого можно изменить с помощью регистров.

  • л : Построчно
  • с : По характеру
  • б : Поблочно

Например, если содержимое копируется с использованием построчной операции (ууу) тогда тип контента будет л , если это по характеру (да) тогда тип будет с , и если содержимое копируется поблочно (ctrl+v и y) тогда тип будет отображаться как б .

Работа с регистрами Vim

Регистры Vim можно использовать для хранения содержимого с помощью операторов извлечения, удаления и изменения. Доступ к сохраненному содержимому можно получить с помощью операторов put.

Сохранение текста в регистр
Когда вы нажимаете кнопку ууу клавиша для копирования строки, она будет сохранена в регистре по умолчанию, называемом безымянным регистром. («») . Чтобы сохранить скопированную строку в определенном регистре, котировка («) за которым следует имя регистра и оператор.

'<рег><оператор>

Например, чтобы скопировать строку в имя регистра С использовать ' зый . Аналогично, если вы выбрали несколько строк в ВИЗУАЛЬНОМ режиме, используйте « зи для хранения строк в регистре z.

Доступ к реестру
Чтобы получить доступ к реестру Vim, цитата («) символ используется с именем регистра и п/п оператор.

'p

Например, если имя регистра — z и для доступа к содержимому этого регистра используйте « зп в НОРМАЛЬНОМ режиме. Однако, чтобы выполнить ту же операцию в режиме INSERT, используйте Ctrl+R Z .

«<рег><оператор> Нормальный режим Чтобы сохранить контент, используйте цитату («) , зарегистрированное имя (а-я) и оператор (y, гг, д, в или вс)
«p Нормальный режим Чтобы вставить содержимое регистра, используйте цитату («) , зарегистрированное имя (а-я) и п/п оператор
Ctrl+R <рег> Режим ВСТАВКИ Чтобы вставить содержимое регистра, используйте Ctrl+R и зарегистрировать имя (а-я)

У вас есть основное представление о регистрах Vim. Теперь я перейду к подробному обсуждению каждого типа регистров и их использования.

Типы регистров Vim

В Vim имеется 10 типов регистров, предназначенных для определенных целей.

  1. Безымянный реестр («»)
  2. Нумерованные регистры (0–9)
  3. Малый регистр удаления («-)
  4. Именованные регистры (a-z или A-Z)
  5. Регистры только для чтения («:, «., «%)
  6. Альтернативный файловый регистр («#»)
  7. Регистр выражений («=»)
  8. Регистры выбора и удаления («*, «+, +~)
  9. Регистр черной дыры («_)
  10. Последний регистр шаблона поиска («/)

1. Безымянный реестр («»)

Это регистр Vim по умолчанию для хранения извлеченного или удаленного текста с помощью г, гг, д, дд, с, или Икс команды.

:рег '' Команда может использоваться для вывода списка содержимого, хранящегося в безымянном регистре.

Чтобы вставить содержимое безымянного регистра, используйте команду put. (п или п) команда. По умолчанию п Команда помещает хранилища контента в безымянный регистр. Альтернативно, данные, хранящиеся в безымянном регистре, также можно вставить с помощью команды «p».

В следующем примере я скопировал строку, используя ууу команду, а затем повторите ее 5 раз, используя счет 5 с p (5p).

2. Нумерованные регистры (0–9).

Пронумерованные регистры используются для хранения последнего извлеченного или удаленного текста.

Регистр 0 отличается от регистров 1-9 . Регистр 0 всегда будет хранить последний выдернутый текст. Например, если я дерну строку, используя ууу команда, строка будет сохранена как в безымянный и 0 регистры.

Теперь, если я удалю строку, используя дд , удаленная строка будет сохранена в безымянном регистре и зарегистрируйте 1 пока последний выдернутый текст останется в регистре 0 . Таким образом, последний выдернутый текст можно получить в любое время через регистрацию. 0 .

Регистры 1-9 сохранить последний удаленный текст. Например, если я удалю строку с помощью дд команда, удаленный текст будет сохранен как в безымянном, так и в регистре. 1 . Регистр 1 будет хранить последний удаленный текст. Если я удалю еще одну строку, ранее удаленный текст переместится в регистр. 2 , а самые последние будут храниться в безымянном и регистре 1 . По сути, нумерованные регистры (1-9) хранить историю удаленного текста.

Разберемся в нумерованном регистре на примере. Следующий текстовый файл Vim состоит из 10 строк; давайте выдернем линия 3 с использованием ууу команда. Теперь давайте проверим состояние регистров с помощью команды :reg.

Выдернутая линия в настоящее время находится в безымянный и 0 регистры. Теперь давайте удалим все строки одну за другой, используя дд команда. Итак, последнее строка 10 будет в безымянном регистре и регистре 1. При этом остальные удаленные строки будут храниться в регистрах 2-9 в порядке возрастания.

Доступ к этим строкам можно получить с помощью п команда. Например, чтобы поместить текст регистра 9 использовать «9 пенсов . Кроме того, если вы хотите поместить значение регистра 9 5 раз, используйте «95 пенсов .

3. Малый регистр удаления («-»)

В этом регистре сохраняется удаленный текст, если он меньше строки, с использованием таких команд, как х, галка, див, мазок, и снова . Более того, если вы удалите какой-либо текст с помощью ВИЗУАЛЬНЫЙ режим выбора, и если оно меньше строки, то оно будет сохранено в маленьком регистре удаления. В Vim строка означает полное предложение, заканчивающееся точкой.

Например, в следующем файле я выбрал 3 слова сотрудничество и поддержка из строки номер 9 и удалил их с помощью д оператор. Небольшой регистр удаления будет использоваться для сохранения этого выбора, поскольку его длина не превышает одной строки. Использовать :рег “- Команда для вывода содержимого небольшого регистра удаления.

4. Именованные регистры (a-z или AZ)

Именованные регистры используются для хранения пользовательского текста. Итак, если вы хотите хранить текст в пользовательском регистре, то 26 регистрируется из а к С может быть использован.

Например, я дергаю строку в следующем файле, используя « зый , текст будет сохранен в С зарегистрируйтесь, как показано на следующем изображении.

Именованные регистры в нижнем и верхнем регистре имеют разное назначение. Например, если текст сохранен в нижнем регистре, то для замены текста этого регистра будет использоваться строчный регистр. Однако для добавления текста в регистр нижнего регистра будет использоваться регистр прописных букв с тем же именем.

Давайте разберемся в этом на примере. Из следующего файла я сохранил строку 8 в реестре Икс с использованием ' хуу .

Чтобы добавить текст после этой строки, я сначала выделю несколько слов в ВИЗУАЛЬНОМ режиме. Чтобы добавить выделенный текст, я буду использовать «Кси команда.

Для замены текста я снова воспользуюсь функцией « хуу .

5. Регистры только для чтения (., %, 🙂

Vim имеет три регистра, доступных только для чтения, в которых хранятся вставленные данные. текст, имя файла, и последний выполненный команда.

. Сохраняет последний вставленный текст
% Сохраняет имя файла
: Сохраняет последнюю выполненную команду

Эти регистры, как следует из названия, не могут быть изменены, однако к ним можно легко получить доступ.

Чтобы поместить последний вставленный текст, используйте '.п команда.

Чтобы напечатать имя файла, используйте команду '%п команда.

Чтобы напечатать последнюю команду, используйте ':п.

@: Команда может использоваться для повторения предыдущей команды в Vim. В следующем примере я удалил первые 3 строки при нажатии @: , удаляются еще 3 строки, следовательно, повторяется предыдущая команда.

6. Регистр альтернативного буфера («#»)

Альтернативный буфер — это файл, который открывается в текущем буфере. Регистр «#» хранит имя файла, находящегося в буфере, в текущем буфере. Давайте откроем еще один файл в том же буфере, используя команду :e ~/.vimrc команды, обратите внимание, что текущее имя файла файл.txt .

Чтобы закрыть открытый буфер, используйте команду :bудалить или :вычеркнуть команда. Теперь можно увидеть альтернативное имя файла, сохраненное в «# регистр.

7. Регистр выражений («=)

Регистр выражений — это уникальный регистр, который не используется для хранения текста, а хранит выражение. Например, если в файле есть несколько чисел, для суммирования этих чисел будут использоваться выражения Vim.

Доступ к этому регистру можно получить с помощью '=' в НОРМАЛЬНОМ режиме и Ctrl+R = в режиме ВСТАВКА.

Например, чтобы найти разницу между двумя числами, нажмите «=», и в строке состояния появится знак равенства; теперь введите оба числа со знаком минус (-) и нажмите кнопку Входить ключ. Теперь, чтобы распечатать разницу, нажмите п или используйте :помещать команда.

Чтобы получить доступ к значению регистра выражений, используйте команду :reg “= команда.

Аналогично, чтобы получить абсолютное значение двух чисел, используйте =abs(значение1-значение2) выражение.

Таким же образом, для хранения вывода системной команды можно использовать этот регистр (выражений). Например, если я хочу прочитать содержимое файла, я буду использовать =system('кот <имя файла>') , при нажатии клавиши Return содержимое вывода будет сохранено. Используя п или :помещать команды, содержимое вывода может быть помещено в буфер.

В Vim можно использовать ряд выражений. Чтобы узнать больше о выражениях Vim, используйте :помощь выражение и :help синтаксис выражения команды.

8. Регистры выбора и удаления («*», «+», «~)

В Vim есть два регистра выбора. «* (цитатазвезда) и «+ (quoteplus), которые используются для хранения текста из графического интерфейса. Эти регистры используются для копирования текста из внешних программ, таких как браузеры или любой другой текстовый процессор.

Например, если вы копируете выделенный текст из браузера, используя Ctrl+C или cmd+c он будет храниться в «* регистр. Однако вы не можете использовать п или :помещать чтобы вставить этот текст в редактор Vim. Использовать '*п поместить в редактор Vim текст, скопированный из внешних приложений.

Важно отметить, что оба «+ и «* регистры подключены к буферу обмена, поэтому оба («*р, «+р) можно использовать для вставки текста в редактор Vim. Аналогично, чтобы поместить текст из Vim, используйте «*уу чтобы выдернуть строку и затем вставить ее в любое приложение с графическим интерфейсом, используйте Ctrl+V или cmd+v.

Важно отметить, что если оба регистра (* и +) делаете то же самое, тогда какой в ​​этом смысл? В Vim есть два регистра выбора. «*, «+ выполняет ту же работу, и это из-за оконной системы X11. X11 предоставляет два метода хранения текста. выбор а другой буферы вырезания . Выделенные фрагменты принадлежат приложению и теряются при закрытии приложения, а вырезанные буферы сохраняют текст на X-сервере. Для этих двух типов хранения используются регистры «*» и «+». Чтобы узнать об этом больше, используйте :help x11-выбор команда.

Далее, удалить регистр «~ который используется для хранения текста последней операции перетаскивания. Например, если вы удалите выделенный текст из внешнего приложения, он будет сохранен в регистре удаления.

Если вам сложно вставить данные из внешнего приложения с использованием трех разных клавиш, вы можете сопоставить выделение для сохранения в безымянном регистре.
Открой вимрк файл, набор мест буфер обмена = безымянный в нем и сохраните файл. Теперь, когда вы копируете данные из внешнего приложения, их можно легко вставить с помощью команды :помещать команда или клавиша p.

Примечание : Регистр удаления (~) будет доступен только в том случае, если Vim скомпилирован с +dnd. В настоящее время он доступен только для графического интерфейса GTK.

9. Регистр черной дыры («_)

Если вы выполняете операцию копирования или удаления в редакторе Vim, по умолчанию он сохраняет текст в регистрах. Если вы хотите удалить текст, не сохраняя его в регистре, используйте регистр черной дыры. Этот регистр не будет изменять безымянный регистр («») при удалении текста.

Например, если я хочу удалить все строки, не сохраняя их в безымянном регистре, то я сначала выберу все строки с помощью ggVG а затем нажмите «_д клавиши для удаления всех строк. Аналогично, чтобы удалить одну линию черной дыры, используйте «_дд .

10. Последний регистр шаблона поиска («/)

Как следует из названия, этот регистр сохраняет последний шаблон поиска, используя / или ? операторы. Например, если вы ищете /Linux , затем используя '/п вставит слово Linux.

Vim использует этот регистр для навигации по н и Н ключи после поиска.

Это регистр, доступный для записи, его содержимое можно изменить с помощью :let. Например, чтобы сохранить Linux в этот регистр, используйте :let @/=’Linux’.

Регистры и макросы

В Vim макросы также сохраняются в именованных регистрах (a-z). Если вы не знаете о макросах, то макросы — это команды установки, хранящиеся в регистре. Этот набор команд можно выполнить, просто используя знак @, за которым следует имя макрорегистра. По сути, макросы устраняют необходимость многократного ввода нескольких команд.

Например, чтобы сохранить макрос в регистре м , Я буду использовать qm<набор команд>q . Я хочу переехать в 5 линии вниз, используя 5дж и удалите строку, используя дд . Использовать, кв.м. чтобы начать запись макроса, а затем нажмите 5дж и дд . Теперь, чтобы выйти из записи макроса, нажмите д . Чтобы проверить, сохранен ли макрос или не используется, :reg “m или :reg m.

Чтобы выполнить эти команды с помощью макрорегистра, используйте команду :@м команда.

Очистка реестра

Не существует простого подхода к очистке регистра, поскольку большинство регистров не нужно очищать, поскольку в конечном итоге они будут перезаписаны. Однако существует несколько способов очистки значения регистра в редакторе Vim.

1. Запишите пустой макрос, чтобы очистить регистр. Например, чтобы очистить регистр m, используйте qmq .

2. Установите пустой текст с помощью позволять . Например, чтобы очистить регистр m, используйте :let @m='.

3. Используйте setreg() функция с пустой строкой в ​​качестве аргумента. Например, чтобы очистить регистр m, используйте :call setreg('m', ”).

Заключение

Имеется 10 разных регистров с разным функционалом, поэтому запомнить их практически невозможно. Если вы новичок, то я бы рекомендовал иметь в виду только три регистра, безымянный регистр. («») , нумерованные регистры (0-9) и именованные регистры (а-я) .

Чтобы сохранить текст в регистр, используйте цитату («) подпишите имя регистра, за которым следует команда оператора (у, д, в) . Чтобы вставить текст из регистра, используйте команды p или P, которым предшествует кавычка. («) и зарегистрировать имя.

Вы наверняка слышали об этом: если вы выполняете задачу более двух раз, то автоматизируйте ее. Регистры Vim могут быть чрезвычайно полезны для автоматизации задач и, в конечном итоге, повышения качества работы. Чтобы узнать больше о регистрах Vim, используйте :помощь регистрируется команда.