Я знаю только об одном экземпляре, использующем регистры, посредством CtrlR*которого я вставляю текст из буфера обмена.
Каковы другие виды использования регистров? Как их использовать?
Все, что вы знаете о регистрах VI (давайте сосредоточимся на vi 7.2) - поделитесь с нами.
Ответы:
Регистры в Vim позволяют запускать действия или команды над текстом, хранящимся в них. Чтобы получить доступ к регистру, вы вводите
"a
перед командой, гдеa
это имя регистра. Если вы хотите скопировать текущую строку в регистрk
, вы можете набратьИли вы можете добавить в регистр с помощью заглавной буквы
Затем вы можете перемещаться по документу и вставлять его в другое место, используя
Вставить из системного буфера обмена в Linux
Вставить из системного буфера обмена в Windows (или из буфера обмена «выделение мыши» в Linux)
Для доступа ко всем определенным в настоящее время регистрам введите
источник
"+
это специальный регистр, который ссылается на системный буфер обмена."*
; поэтому команда копировать до конца файла становится"*yG
.*
это буфер обмена «выделение мыши» и буфер обмена+
Ctrl-XCV.+
)?Мне было приятно, когда я обнаружил
0
регистр. Если вы дергаете текст, не назначая его определенному регистру, он будет присвоен0
регистру, а также сохранен в"
регистре по умолчанию . Разница между0
и"
регистрами является то , что0
только заполняется скопированным текстом, в то время как регистр по умолчанию также заполняются с текстом удален с помощьюd
/D
/x
/X
/c
/C
/s
/S
команды.Я нахожу это полезным, когда я хочу скопировать некоторый текст, удалить что-то и заменить его скопированным текстом. Следующие шаги иллюстрируют пример:
y[motion]
- этот текст сохраняется в"
и0
регистрируетсяd[motion]
- этот текст сохраняется в"
реестре"0p
где
"
команда использовать регистр для следующей команды.На последнем шаге, если вы должны были вставить из регистра по умолчанию (с
p
), он будет использовать текст, который вы только что удалили (вероятно, не то, что вы хотели).Обратите внимание, что
p
илиP
вставляется из регистра по умолчанию. Длинный эквивалент будет""p
(или""P
) и"0
содержит последний рывок,"1
содержит последнее удаление или изменение.Для получения дополнительной информации см
:help registers
.источник
p
илиP
вставляет из регистра по умолчанию. Длинный эквивалент будет""p
(или""P
)."
это команда для использования регистра для следующей команды. Так""p
что использовал бы"
регистр для команды вставки и"0p
использовал бы0
регистр.0p
будет означать переход к первому символу текущей строки и вставку из содержимого регистра по умолчанию ("
)."p
будет неполной командой, так как вам нужно указать, для какой команды использовать регистрp
.Одна из моих любимых частей о регистрах - использовать их как макросы!
Допустим, вы имеете дело с файлом значений с разделителями табуляции следующим образом:
Теперь вы решаете, что вам нужно добавить знак процента в конце поля% Dev (начиная со 2-й строки). Мы сделаем простой макрос в (произвольно выбранном)
m
регистре следующим образом:Нажмите::
qm
для начала записи макроса вm
регистр.EE
: Перейти к концу 3-го столбца.a
: Режим вставки, чтобы добавить в конец этого столбца.%
: Введите знак процента, который мы хотим добавить.<ESC>
: Вернуться в командный режим.j0
: Перейти к началу следующей строки.q
: Остановить запись макросаТеперь мы можем просто напечатать
@m
этот макрос для текущей строки. Кроме того, мы можем напечатать@@
повторить или100@m
сделать это 100 раз! Жизнь выглядит довольно хорошо.В этот момент вы должны сказать: « НО ПОДОЖДИТЕ, ЧТО ТАКОЕ ЭТО СДЕЛАНО С РЕГИСТРАМИ ?»
Отличный момент. Давайте исследуем, что находится в содержимом
m
регистра, набрав"mp
. Затем мы получаем следующее:Сначала это выглядит так, как будто вы случайно открыли двоичный файл в блокноте, но на второй взгляд, это точная последовательность символов в нашем макросе!
Вы любопытный человек, поэтому давайте сделаем что-нибудь интересное и отредактируем эту строку текста, чтобы вставить
!
вместо скучного старого%
.Тогда давайте вставим это в
n
регистр, набравB"nyE
. Тогда, просто для пика, давайте запустимn
макрос в строке наших данных, используя@n
....Боже мой, он добавил
!
По сути, запуск макроса подобен нажатию точной последовательности клавиш в регистре этого макроса. Если это не крутой трюк, я съем свою шляпу.
источник
+
вместо,j0
чтобы перейти к первому непустому символу на следующей строке.Другие полезные регистры:
"*
или"+
- содержимое системного буфера обмена"/
- последняя команда поиска":
- последняя команда.Обратите внимание, что с макросами vim вы можете редактировать их, поскольку они представляют собой просто список нажатий клавиш, используемых при записи макроса. Таким образом, вы можете записать в текстовый файл макрос (используя
"ap
для записи макроса а ), отредактировать их и загрузить в регистр с помощью"ay$
. Хороший способ хранения полезных макросов.источник
vim --version
--clipboard
означает, что у вас ее нет,+clipboard
значит, у вас есть."*
и"+
даже круче:"+
вставляется последний скопированный текстctrl+c
(буфер копирования) или какой бы то ни было ярлык, который вы используете (илиright-click>copy
)."*
вставляет последний текст, выделенный мышью (буфер выбора). Поэтому, если вы копируете что-ctrl+c
то с помощью мыши, а затем выделяете что-то еще с помощью мыши, вы можете выбрать, какой из них вставить. Это не работает в Windows, где эти два регистра являются синонимами."*
и в"+
течение многих лет! Я думал, что только gvim имеет доступ к системным буферам обмена, но, очевидно, обычный vim тоже имеет доступ!-xterm_clipboard
наvim --version
. Какой-нибудь простой пакет для установки? (Debian / кв-получить). Спасибо.Черная дыра регистр
_
является/dev/null
регистры.Я использую его в своем vimrc, чтобы разрешить удаление отдельных символов без обновления регистра по умолчанию:
и вставить в визуальном режиме, не обновляя регистр по умолчанию:
источник
x
становится менее удобным для транспонирования символов.x
отображением вы больше не можете выполнятьxp
«команду» для переключения тока со следующим символом. Очень полезно для исправления опечаток. Мы также должныXp
переключать ток с предыдущего символа.Если вы хотите вставить содержимое регистра в команду ex-mode, нажмите
<C-r><registerletter>
.Зачем тебе это использовать? Я хотел выполнить поиск и заменить длинную строку, поэтому я выбрал ее в визуальном режиме, начал печатать выражение поиска / замены
:%s/[PASTE YANKED PHRASE]//g
и продолжил свой день.Если вы хотите вставить только одно слово в режиме ex, убедитесь, что курсор находится на нем, прежде чем войти в режим ex, а затем нажмите
<C-r><C-w>
в режиме ex, чтобы вставить слово.источник
:
командной строке - лучшее, что я узнал сегодня/[write out your regex]<cr>
а затем заменить простоs/<C-R>//replacement/
. Таким образом, вы сможете получить обратную связь в реальном времени о своем регулярном выражении перед выполнением замены.Я думаю, что секретный регистр гуру - это выражение = регистр. Это может быть использовано для творческих сопоставлений.
Вы можете использовать его в сочетании с вашей системой, как описано выше, или получать ответы от пользовательских функций VimL и т. Д.
или просто специальные вещи, как
источник
Крутой трюк состоит в том, чтобы использовать
"1p
для вставки последнего удаления / изменения (и затем использовать.
несколько раз для вставки последующих удалений. Другими словами,"1p...
в основном эквивалентно"1p"2p"3p"4p
.Вы можете использовать это, чтобы изменить порядок строк:
dddddddddd"1p....
источник
Со страницы помощи vim:
источник
источник
nmap <F2> @q
я использую регистр q, потому что затем, чтобы сохранить макрос для F2 для воспроизведения, я просто нажмуqq
. быстрое сохранение макросов и воспроизведение.Я использую регистр по умолчанию для поиска текста в моем окне vim без необходимости тянуться к мышке.
:!grep "<CTRL-R>0"<CR>
источник
Используйте регистры в командах с
@
. Например:Установите их в команде:
Сейчас
"ap
буду вставлятьabc
.источник
Большим источником путаницы является регистр по умолчанию
"
. Важно знать, как это работает. Намного лучше, если регистр по умолчанию избегают в большинстве случаев. Объяснение из документации Vim:Таким образом, регистр по умолчанию фактически является указателем на последний использованный регистр. Когда вы удаляете или дергаете что-то, этот регистр будет указывать на другие регистры. Вы можете проверить это, проверив регистры. Всегда есть другой регистр, который точно совпадает с регистром по умолчанию: регистр yank (
"0
), регистр первого удаления ("1
), регистр малого удаления ("-
) или любой другой регистр, который использовался для удаления или восстановления.Единственным исключением является регистр черной дыры. Вим док говорит:
Как правило , вы гораздо лучше, используя непосредственно:
"0
,"-
и"1-"9
регистры по умолчанию или именованные регистры.источник
Один из пропущенных регистров - «.» регистр точек, который содержит последний вставленный текст независимо от того, как он был вставлен, например, ct] (изменить до]). Затем вы понимаете, что вам нужно вставить его в другое место, но вы не можете использовать метод точечного повтора.
источник
Мой любимый регистр - это
':'
регистр. Запуск@:
в обычном режиме позволяет мне повторить ранее выполненную команду ex.источник
Мой друг Брайан написал об этом обширную статью. Я думаю, что это отличное введение в то, как использовать темы. https://www.brianstorti.com/vim-registers/
источник