vim вирізати та вставити історію


60

Коли я "вирізаю" vim, я вважаю, що є регістри, які зберігають історію всіх останніх речей, які я вирізав. Як отримати доступ до цих реєстрів?

Наприклад, скажімо, я вирізав кожне з цих слів послідовно

  • 'Здравствуйте'
  • "Світ"
  • "І"
  • 'Vim'

Зауважте, що я фактично не зберігаю ці зміни в конкретні регістри, я просто використовую 'd' чотири рази поспіль.

Відповіді:


102

The

: регістри допомоги

команда виявляє, що існує 10 нумерованих регістрів ( "0до "9).

Реєстрація "0є самою останньою річчю ривком ; register "1має найновіший видалений текст, реєструє "2попереднє видалення, "3має видалення до цього тощо.

Якщо видалити кожен рядок , в свою чергу, регістри "1, "2, "3і "4буде містити «ВІМ», «І», «Мир» & «Hello», відповідно.

Ви можете перевірити це за допомогою команди :reg(або :registers):

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

Отже, видаливши чотири рядки один за одним, ви можете відновити другий рядок ("Світ") за допомогою

"3p

тому що це третє за останнім часом видалення.


Це прекрасно; однак, що я хочу, щоб останній "витріщений" текст?
Олексій

Отже, ви б використовували: p (що означає те саме, що "0p)
njd

1
Також звертайте увагу на спеціальні регістри, особливо "*" та "+", коли ви читаєте :help registers. Дуже корисно.
Даніель Андерссон

3
Боги, ви щодня дізнаєтесь щось нове, як вімер. Це чудово. Дякую, @njd
ELLIOTTCABLE

3
Ця відповідь залишає важливу деталь: таким чином в історії зберігаються лише видалення одного рядка або більше. Якщо ви видалите слова таким чином, як ОП, описаний у запитанні (використовуючи dзамість цього чотири рази dd), то всі, крім останнього видаленого, втрачаються.
Олександр Рехштайнер

8

Крім відповіді njd, це можна спростити за допомогою плагіна YankRing . Окрім полегшення перегляду попередніх ниток, ви можете налаштувати деякі клавіші, які дозволять вам вискакувати попередні нитки зі складу "стека". Це дозволяє:

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring

4
Не могли б ви додати, як скласти карту, ,pщоб попнути попередній янк?
Ендрю Вуд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.