Копирование и вставка из внешнего источника
Я использую 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