Скопируйте, удалите, затем вставьте в Vim


15

Я только начал работать с Vim вчера, и у меня проблемы с пониманием копирования и вставки. Я понимаю, что для копирования я вхожу в визуальный режим, выделите и затем нажмите. Затем я перехожу к строке, на которую я хочу вставить, но чаще всего мне не нужно удалять какой-либо текст из этой строки. Я делаю это с помощью xили dw. Это приводит к тому, что моя оригинальная копия перезаписывается (как xи dwкажется, вырезать). Как мне обойти это?

Чтобы привести это в пример

$foo = $this->foo->property;
thislineuses($foo);

Таким образом, с приведенным выше кодом, который я копирую $this->foo->property, я бы хотел перейти на строку 2, удалить $fooи вставить. Проблема в том, что когда я удаляю $fooиз строки 2, это то, что вставляется вместо $this->foo->property.

Ответы:


16

Посмотрите на :h copy-move. Янки по умолчанию или удаление идут в место, называемое регистром (регистр с именем "). Если вам нужно удалить какой-либо текст перед вставкой, вам следует избегать перезаписи регистра x, как вы обнаружили. К счастью, вы можете использовать любую другую букву или цифру для названия другого регистра.

  • "ayy(вставить строку в реестр a)
  • x, ddИ т.д. (удалить текст в безымянный регистр, ")
  • "ap(вставьте текст из реестра a)

9

Если проблема в том, что вам просто нужно заменить некоторые textна некоторые text2, то просто выделите и дерните text2. Затем выделите textи нажмите pили, Pчтобы вставить text2вместо text.

Краткое руководство для некоторых распространенных команд vim: http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know.

Наслаждайтесь!

Редактировать: обратите внимание, что pвставляет текст после курсора и Pперед курсором.


это хорошо, потому что вам не нужно думать о промежуточных регистрах, в которые можно войти. это просто работает.
Джон Шонинг

7

Вы можете скопировать в именованный регистр "ayw, удалить, а затем вставить из именованного регистра "ap.

Однако обычно проще просто изменить порядок, в котором вы делаете что-либо. Выполните вставку, а затем удалите или удалите, а затем выполните копирование / вставку.

Кроме того, вы можете удалить в регистр черной дыры "_d. См. Https://stackoverflow.com/q/54255/70863


3

У вас есть различные регистры, которые вы можете использовать для хранения различных текстовых значений. Если вы хотите сохранить текст в регистр, отличный от того, куда будет удален текст (т. Е. С помощью xили d w), используйте следующее:

Чтобы сохранить текст в реестре a:

  • нажмите " a[yank и команда перемещения] (сохраняет текст в регистр a)
  • перейдите туда, куда вы хотите вставить текст
  • нажмите " a p(вставить текст из регистра a)

Вы можете использовать регистр для каждой буквы на клавиатуре и каждого числа. Удаление текста не будет использовать эти регистры, поэтому текст будет оставаться в регистре до тех пор, пока вы не завершите сеанс или не добавите туда что-то еще вручную.


0

Вам не нужно выделять всю строку, если вы используете v(в отличие от V) визуальный режим. Если это то, что вы просите.

Если вы говорите об изменении скопированного текста, то сначала вы копируете и стираете части.

А если вы хотите скопировать, то измените оригинал, а затем вставьте, затем вы можете перетянуть в другой регистр. Мол "2y, потом модифицируй, потом иди в другое место и "2p.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.