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

Может ли кто-нибудь помочь мне с этим: я пытаюсь понять, как копировать и вставлять текст между двумя разными экземплярами vim на разных терминалах (используя терминал iterm2 или Mac). Я могу сделать это с помощью мыши, если я сделаю ":set mouse=a", но я хотел бы иметь возможность сделать это с помощью клавиатуры.

Я погуглил, и он говорит, что вы можете использовать регистры «*» или «+» для копирования/вставки в/из системного буфера обмена, но когда я набираю * или + в vim, Mac издает один из тех звуков, которые он издает, когда вы не могу что-то сделать. Я также сделал «: set clipboard = unnamed», но это тоже не сработало.

Я использую Mac OSX 10.7 (Lion) и терминал iTerm2 или Mac.

Спасибо за помощь


person Eddy    schedule 15.11.2011    source источник
comment
Просто как примечание; когда я хотел сделать что-то подобное, я в конце концов понял, что простой способ добиться этого — вовсе не запускать два разных экземпляра vim на разных терминалах, а вместо этого иметь несколько разделений или буферов в одном экземпляре vim, чтобы я мог просматривать сразу несколько файлов всего в одном vim. Тогда это вообще не проблема, и вы можете дергать и помещать текст между этими файлами в свое удовольствие без каких-либо особых усилий, изучения новых команд или чего-то еще.   -  person Trevor Powell    schedule 16.11.2011
comment
Чтобы использовать системный буфер обмена, я использую последовательность "*y для извлечения из него и "*p или "*P для вставки из него. И да, мне нравится иметь более одного окна и переключаться между ними с помощью ALT-TAB. Это намного проще, чем использовать одно окно для VIM и 2 разных каталога с некоторыми файлами в нем.   -  person mliebelt    schedule 16.11.2011
comment
Я использую только один Vim и выполняю всю навигацию/открытие файлов из Vim через LustyExplorer. Все буферы, которые я открывал в сеансе, скрыты и доступны очень быстро через тот же плагин. Использование только одного Vim позволяет мне совместно использовать регистры (и, следовательно, макросы) и историю между всеми моими открытыми буферами.   -  person romainl    schedule 16.11.2011


Ответы (2)


Не могли бы вы добавить вывод :version?

Я могу дернуть с yy или y в одном экземпляре Vim, работающем в окне A Terminal.app, и поместить с p или P в другой экземпляр Vim, работающий в окне B Terminal.app, с этой строкой в ​​моем ~/.vimrc:

set clipboard+=unnamed

без использования определенных регистров буфера обмена (* или +).

И почему у вас два экземпляра Vim работают на разных терминалах? SSH/локальный? Если кто-то находится в сеансе SSH, выдергивание/вставка не будет работать, потому что две машины (локальная/удаленная) не используют один и тот же буфер обмена.

ИЗМЕНИТЬ

Я подозревал, что Vim не был скомпилирован с правильными флагами. Видимо дело в этом.

Поскольку вы используете Vim по умолчанию в Mac OS X, я считаю, что вам не нужно его перекомпилировать или даже компилировать что-либо, поскольку это часто приводит к большему количеству проблем, чем оно того стоит.

Вместо этого загрузите последнюю сборку MacVim и используйте исполняемый файл (CLI) Vim в комплекте MacVim: он имеет все те же функции, что и MacVim (конечно, с ограничениями CLI).

Добавьте эту строку в свой ~/.bashrc или ~/.profile или туда, где вы используете псевдонимы и пользовательские функции bash:

alias vim='/path/to/MacVim.app/Contents/MacOS/Vim'
person romainl    schedule 15.11.2011
comment
Вот вывод моей версии: VIM - Vi IMproved 7.3 (15 августа 2010 г., скомпилировано 24 июня 2011 г., 20:00:09) Скомпилировано [email protected] Обычная версия без графического интерфейса. - person Eddy; 15.11.2011
comment
Я попробовал то, что вы сказали, с двумя открытыми окнами терминала, в каждом из которых был экземпляр vim. Но я все еще не могу копировать и вставлять между ними (даже с :set clipboard+=unnamed в моем ~/.vimrc) - person Eddy; 15.11.2011
comment
Ах, я только что заметил это в выводе версии: -xterm_clipboard. Итак, я думаю, мне нужно перекомпилировать vim и включить xterm_clipboard или что-то в этом роде? Как мне это сделать? - person Eddy; 15.11.2011
comment
И да и нет. Да, проблема в отсутствующем флаге. Нет, вам не нужно компилировать новый Vim. Вместо этого загрузите и установите MacVim и используйте исполняемый файл CLI, скрытый в комплекте, как описано в этом мой ответ. - person romainl; 15.11.2011

Если вы хотите скопировать весь файл в целевой файл.

Откройте целевой файл в vim.

Поместите курсор в нужное место и введите следующее:

:r /путь_к_файлу/file.ext

Это скопирует весь файл туда, где находится ваш курсор...

person DeWayne Whitaker    schedule 15.01.2013
comment
Вы можете связать ответы на разных сайтах обмена стеками, добавив комментарий со ссылкой на исходный ответ. Нет необходимости дублировать контент путем копирования и вставки. - person oleksii; 16.01.2013