Vim: скопировать выделение в буфер обмена OS X - PullRequest
217 голосов
/ 24 марта 2009

Скажем, у вас выделена область в vim. Как вы можете скопировать его в буфер обмена OS X?

(Подсказка: в буфер обмена OS X можно записать по каналу /usr/bin/pbcopy)

Ответы [ 26 ]

233 голосов
/ 25 марта 2009

Для MacVim и Windows Gvim, просто добавьте следующее к своему ~/.vimrc:

set clipboard=unnamed

Теперь все операции, такие как yy, D и P, работают с буфером обмена. Нет необходимости ставить перед ними префикс "* или "+.

133 голосов
/ 25 марта 2009

Если буфер обмена включен, вы можете скопировать выбранный регион в буфер обмена, нажав "*y

Чтобы увидеть, включен ли он, o vim --version и найдите +clipboard или -clipboard. Например, он не включен по умолчанию в моем окне 10.5.6:

% which vim
/usr/bin/vim
% vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Nov 11 2008 17:20:43)
Included patches: 1-22
Compiled by _www@b77.apple.com
Normal version without GUI.  <b>Features included (+) or not (-):</b>
<i>...</i>
-clientserver <b>-clipboard</b> +cmdline_compl +cmdline_hist +cmdline_info +comments
<i>...</i>

Если бы он был скомпилирован с +clipboard, я мог бы использовать регистр "* для доступа к системному буферу обмена.

Я скачал 7.2 источник и скомпилировал его (просто как tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install), и буфер обмена был включен:

% which vim
/usr/local/bin/vim
% vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Mar 24 2009 17:31:52)
Compiled by rampion@Myrrhy.local
Normal version with GTK2 GUI.  <b>Features included (+) or not (-):</b>
<i>...</i>
+clientserver <b>+clipboard</b> +cmdline_compl +cmdline_hist +cmdline_info +comments
<i>...</i>

Однако даже после компиляции я не смог скопировать в буфер обмена при запуске vim в Terminal.app, только в X11.app.

93 голосов
/ 26 февраля 2012

Вы можете визуально выделить текст и набрать :w !pbcopy<CR>

Или вы можете включить приведенные ниже сочетания клавиш в файл ~/.vimrc. Они вырезать / скопировать текст в визуальном режиме в буфер обмена операционной системы.

vmap <C-x> :!pbcopy<CR>  
vmap <C-c> :w !pbcopy<CR><CR> 

источник: http://drydevelopment.com/blog/vim-pbcopy-on-os-x

75 голосов
/ 24 марта 2009

В зависимости от того, какую версию vim я использую, я могу использовать регистр + для доступа к буферу обмена.

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing может иметь некоторые идеи, которые подходят и вам.

36 голосов
/ 24 марта 2009

Звездочка в двойных кавычках ( "*) перед любой командой yank приведет к тому, что результаты будут скопированы в буфер копирования. Это также подходит для Windows и Linux.

25 голосов
/ 01 сентября 2013

В macos 10.8 vim компилируется с -clipboard, поэтому для использования "*y вам понадобится перекомпилировать. К счастью brew install vim скомпилирует новую версию для вас легко и это будет +clipboard.

17 голосов
/ 15 июня 2013

Визуально выберите текст и введите:

ggVG
!tee >(pbcopy)

Который я нахожу лучше, чем:

ggVG
:w !pbcopy

Поскольку не появляется сообщение: «Нажмите клавишу ВВОД или введите команду для продолжения»

11 голосов
/ 06 февраля 2010

Если вы используете MacPorts, вы можете обновить VIM, чтобы включить поддержку буфера обмена через:

порт установки vim + x + x11

Теперь вы используете регистр "+", чтобы вернуть текст прямо в буфер обмена Mac. Работает как шарм.

10 голосов
/ 22 сентября 2016

В моем случае мне просто нужно было сделать:

:set mouse=v

пожалуйста, посетите оригинальное решение на superuser.com

8 голосов
/ 09 июня 2015

Если вы используете MacOS X:

$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]

Затем добавьте в свой .vimrc:

set clipboard=unnamed

Теперь вам просто нужно войти в vim и выполнить :%y, чтобы скопировать весь контент в буфер обмена.

...