После того, как вы вложили в Vim прядильную линию, почему я не могу вставить ее снова?
Этот вопрос, скорее всего, был дан раньше, но я попытался выполнить поиск и не смог найти ответ нигде.
Я немного новичок в Vim, и у меня возникает следующая проблема. Как только я задержу строку и вставьте ее, я не могу вставить ее снова. Например, скажем в среде Word, вы скопируете текст, вставьте его, а затем снова вставьте его. Но в Vim, как только я вставил его, а затем попробую вставить снова (p), он вставляет текст, в который я вставлял протянутую линию.
Так, например, я дернул линию "Эта линия дергалась" на "Я не хочу эту строку" , и поэтому "Эта строка дергается" происходит поверх "Я не хочу эту строку" .
Если я снова нажму кнопку p, я не получу "Эта строка дернута", но получит "Я не хочу эту строку" .
Есть ли способ, по которому я могу снова вставить одну и ту же выдернутую линию, не возвращаясь назад и не дернув ее снова?
Ответы
Ответ 1
Это связано с регистрами vim. Когда вы вставляете протянутую линию над другой строкой, линия, которую вы только что удалили (путем вставки поверх нее), занимает место yanked line в регистре по умолчанию (который хранит yanked lines). Это упрощает работу коммутационных линий. Погрузите один, вставьте поверх другого и вернитесь и снова вставьте. Тем не менее, чтобы сохранить прямую линию, вы можете указать регистр, поэтому вместо y
вы можете использовать "ay
, и это выдержит вашу строку в регистр a
. Теперь для вставки вы можете использовать "ap
, и это вставляет содержимое регистра a
, которое не будет перезаписано.
В качестве бонуса "+y
или "*y
и "+p
или "*p
вставить из системного буфера обмена (вставка другой копии приложения), если он включен в vim (который находится в большинстве систем).
EDIT: Как упоминалось в комментариях, когда вы используете команду yank, yanked text не только переходит в регистр по умолчанию, но также в регистр 0 (который не будет перезаписан, когда вы вставляете что-то еще). Это означает, что вы обычно можете yank с помощью y
, а затем вставьте его с помощью "0p
, и он не будет перезаписан ничем, что вы наклеиваете.
Ответ 2
Из моего .vimrc:
"Paste in visual mode without copying
xnoremap p pgvy
Пояснение:
xnoremap - переназначить только в визуальном режиме
p - Вставить
gv - Повторно выберите последний выбор (не тот, который вы сейчас используете, но оригинал)
y - скопировать его (последний выбор)
Внутри этого сопоставления вы можете снова и снова вставлять визуально выбранные строки.