Скопируйте и вставьте из внешнего источника - PullRequest
10 голосов
/ 13 октября 2009

В качестве основного текстового редактора я использую vim (на самом деле gvim для windows). В моем рабочем процессе мне приходится копировать предложения в / из различных внешних источников, поэтому я использую clipboard = безымянный, чтобы сохранить мои нажатия клавиш (p вместо "* p).
Я копирую текст из внешнего источника и хочу вставить его в два разных места в vim. Я отмечаю первый (v) и затем использую p, чтобы вставить его. Проблема в том, что в этот момент я теряю оригинальный буфер и не могу вставить его во второе место. Он не существует в безымянном буфере, буфере * или пронумерованных буферах. Я предполагаю, что вставка поверх выделения помещает «вставленный» текст в безымянный буфер.
Как я могу вставить мою исходную строку в двух местах? то есть предотвратить его потерю из буферов.

Спасибо.

Ответы [ 5 ]

6 голосов
/ 25 октября 2009

Попробуйте это:

:vmap p "_xP
  • vmap означает создание сопоставления, которое применяется только в визуальном режиме.
  • p - ключ для создания сопоставления.
  • "_ - регистр черной дыры. Это используется в любой ситуации, когда вы хотите удалить текст, не затрагивая регистры.
  • xP означает удалить выделенный текст, а затем вставить перед результирующей позицией курсора.
1 голос
/ 25 октября 2009

Я не знаю, правильно ли я вас понял, но я попробовал то, что вы делаете, и у меня нет проблем с этим с помощью + drop-register.

Мой рабочий процесс:

  1. скопировать предложение во внешнее приложение (т. Е. Браузер)
  2. визуально выберите предложение в vim и замените его на "+ p или p (с буфером обмена = набор без имени)
  3. визуально выберите другое предложение и замените его на "+ p

К сожалению, при вставке во второй раз вы должны явно вставить из регистра +. Поэтому я бы порекомендовал сопоставление для p / P вместо использования clipboard = без имени

nmap p "+p

Попробуйте использовать

:registers

чтобы увидеть содержимое разных регистров.

1 голос
/ 14 октября 2009

Вы можете настроить отображение, чтобы облегчить боль:

:vmap <F5> "zxP

Это удалит визуально выделенный текст, но поместит его в другой регистр, чтобы буфер обмена не пострадал. Измените <F5> на то, что вам удобнее.

0 голосов
/ 24 октября 2009

Проверьте значение параметров «guioptions». Убедитесь, что флаг «а» не установлен. Кроме того, проверьте, включена ли опция «clipboard», и убедитесь, что не установлены ни флаги «unonym», ни «autoselect»

:set go-=a
:set clipboard-=unnamed
0 голосов
/ 14 октября 2009

Я не знаю, как это сделать в Windows. С KDE у буфера обмена есть история, из которой вы можете выбирать, поэтому вы можете выполнить вставку, выбрать предыдущий выбор из буфера обмена и вставить в новое место.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...