Копирование и вставка из внешнего источника

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

Спасибо.

Ответ 1

Попробуйте следующее:

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

Ответ 2

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

:vmap <F5> "zxP

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

Ответ 3

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

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

  • скопировать предложение во внешнее приложение (т.е. браузер)
  • визуально выберите предложение в vim и замените его на "+p или p (с буфером clip = nonamed set)
  • визуально выбрать другое предложение и заменить его на "+p

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

nmap p "+p

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

:registers

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

Ответ 4

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

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

Ответ 5

Проверьте значения параметров "guioptions". Убедитесь, что флаг "a" не установлен. Кроме того, проверьте, что опция "буфер обмена" и убедитесь, что не установлены флаги "неназванный" или "автоматический выбор".

:set go-=a
:set clipboard-=unnamed