Как скопировать данные между различными экземплярами vim?

Вы можете создать изображение USB-накопителя (или другого устройства) с помощью dd.

Например

dd if=<usb device> of=usb.img

Вы можете добавить дополнительные параметры в dd для оптимизации команды (например, bs).

35
задан 16 January 2012 в 14:15

10 ответов

Сначала вы должны установить версию vim с поддержкой буфера обмена. Для размещения пользователей с неграфическими средами (например, пользователями Ubuntu Server), vim и vim-tiny не подключаются к этой возможности. Вы захотите установить GVim, который запускается либо графически, либо в вашем терминале. GVim заменит команду vim.

Вы можете вытащить текст в «срезанный буфер» из первого vim, а затем вставить текст во второй vim. Чтобы скопировать в глобальный буфер, используйте регистр +. Клавиша " позволяет указать, какой регистр использовать при выполнении операции yank или paste.

В первом vim запишите строку в регистр +:

"+yy

, затем, чтобы вставить из регистра + во втором vim:

"+p

Для получения дополнительной информации о доступных регистрах, проверьте :help registers. Вы также можете использовать "+p для вставки текста, скопированного из любого другого источника в вашей системе.

42
ответ дан 25 May 2018 в 18:58
  • 1
    Что бы это ни стоило, если вы устанавливаете GVim (пакет можно назвать чем-то вроде vim-gnome), в записях меню очень часто даются ключевые ярлыки, которые они будут вызывать. – zpletan 6 September 2011 в 21:42
  • 2
    Я не хочу устанавливать Gvim. Как мне это сделать в vim? – trusktr 23 March 2013 в 04:32
  • 3
    @trusktr на самом деле это работает и в vim. В этом Q & amp; A говорится, что вам нужно хотя бы vim 7.3.74 (что означает Ubuntu 11.10 или новее). – lumbric 28 March 2013 в 19:43
  • 4
    это как-то не работает, если у вас vim началось внутри tmux, а другой vim начал нормально снаружи - вы случайно знаете, как обойти эту проблему? – serup 5 January 2017 в 13:59
  • 5
    "*yy, "*p также работает. если вы нажмете :reg, вы увидите, что список звезд – artificis 12 April 2018 в 10:35

Лучшее решение, которое сработало для меня (что не требует меня изменить мои привычки привязки), находится здесь: https://stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard -in-vim

просто положил:

set clipboard=unnamedplus

в ваш .vimrc.

16
ответ дан 25 May 2018 в 18:58
  • 1
    Мне действительно нужно было добавить set clipboard=unnamedplus в сочетании с установкой GVim. Тем не менее, я смог использовать xfce4-terminal для Vim вместо реальной программы GVim. – jbrock 5 August 2016 в 02:13

Мне нравится решение Билла, и я создал сопоставление:

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

первый в визуальном режиме копирует все в / tmp / vitmp, а второй копирует содержимое из / tmp / vitmp в файле

8
ответ дан 25 May 2018 в 18:58
  • 1
    простое прямое решение - старинный способ - спасибо, это сделало это для меня – serup 5 January 2017 в 14:04
  • 2
    Что мне нужно, чтобы ввести Vim после добавления этого в .vimrc? – Vitaly Zdanevich 14 April 2017 в 09:22
  • 3
    Вам нужно настроить vim, чтобы вы могли использовать ключ-лидер, следуя y, чтобы скопировать ключ-лидер, а затем p для вставки. – Samir Sadek 15 April 2017 в 10:28
  • 4
    Это тот, который работает. использование "*y, кажется, разбито на серверах – ospider 21 September 2017 в 07:48

Я перемещаюсь между различными машинами семейства Unix и обнаружил, что для меня всегда работает следующая последовательность:

В сеансе источника vi:

Используйте ESC m a для отметки первой строки Используйте ESC m b, чтобы отметить последнюю строку. Используйте :'a,'b w! xfer, чтобы записать диапазон в файл царапин

В целевой сессии:

Используйте ESC m a для отметки первой строки [ ! d3] Используйте ESC :r xfer для чтения в тексте

Я знаю, что это некрасиво, но он всегда работает для меня!

4
ответ дан 25 May 2018 в 18:58

На самом деле это довольно просто: установите версию vim, которая поддерживает буфер обмена. если ваш vim не имеет значения, выполните одно из следующих действий:

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

После установки просто запустите vim. Вы также можете проверить, что буфер обмена включен, выполнив:

 vim --version|grep clipboard

вы должны увидеть +xterm_clipboard.

2
ответ дан 25 May 2018 в 18:58

Не используется yy, но если вы выберете текст, который хотите скопировать с помощью мыши (иногда вам может потребоваться использование Shift- [drag]), переключитесь в другое окно терминала и сделайте [средний клик] или сдвиг - [средний щелчок] там, текст будет вставлен в вашу текущую точку вставки.

Это работает для большинства программ командной строки и графического интерфейса, а не только для vim.

1
ответ дан 25 May 2018 в 18:58

Вероятно, вы все ненавидите этот ответ. Раньше я работал в vi в 80-х годах на разных компьютерах Unix и недавно имел возможность поиграть в Linux.

Мое решение для вырезания и вставки использует Putty, работающий в Windows, для доступа к моей Linux-коробке.

Putty позволяет вам скопировать любой txt в его окно, просто выделив его. затем вы можете перейти в другое окно / сеанс Putty и щелкнуть правой кнопкой мыши для вставки.

не может быть проще. и теперь есть vim. слишком плохо, что не было вокруг моего дня, это помогло бы мне покровительствовать мафии emacs.

0
ответ дан 25 May 2018 в 18:58

Не используется yy, но если вы выберете текст, который хотите скопировать с помощью мыши (иногда вам может понадобиться Shift-[drag]), переключитесь в другое окно терминала и сделайте [средний клик] или Shift - [средний щелчок] там, текст будет вставлен в вашу текущую точку вставки.

Это работает для большинства программ командной строки и графического интерфейса, а не только для vim.

1
ответ дан 31 July 2018 в 10:30

На самом деле это довольно просто: установите версию vim, которая поддерживает буфер обмена. если ваш vim не имеет значения, выполните одно из следующих действий:

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

После установки просто запустите vim. Вы также можете проверить, что буфер обмена включен, выполнив:

 vim --version|grep clipboard

вы должны увидеть +xterm_clipboard.

2
ответ дан 4 August 2018 в 18:51

Я перемещаюсь между различными машинами Unix-семейства и обнаружил, что для меня всегда работает следующая последовательность:

В сеансе источника vi:

  1. Используйте ESC m a для отметьте первую строку
  2. Используйте ESC m b для отметки последней строки
  3. Используйте :'a,'b w! xfer, чтобы записать диапазон в файл царапины

В пункте назначения session:

  1. Переместить курсор на строку ввода
  2. Использовать ESC :r xfer для чтения в тексте

Я знаю, что это не очень, но это всегда работает для меня!

4
ответ дан 7 August 2018 в 20:55

Другие вопросы по тегам:

Похожие вопросы: