Vim: копировать выделение в буфер обмена OS X

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

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

25 ответов


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

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


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

set clipboard=unnamed

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


если буфер обмена включен, вы можете скопировать выбранную область в буфер обмена, нажав "*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.  Features included (+) or not (-):
...
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
...

если бы он был скомпилирован с +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.  Features included (+) or not (-):
...
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
...

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


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

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

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

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


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


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


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

ggVG
!tee >(pbcopy)

который я нахожу приятнее, чем:

ggVG
:w !pbcopy

Так как он не мигает приглашение: "нажмите ENTER или введите команду, чтобы продолжить"


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

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

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


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

:set mouse=v

пожалуйста посетите первоначальное решение дальше superuser.com


Если вы находитесь на MacOS X:

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

затем добавьте к вашему .vimrc:

set clipboard=unnamed

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


Если ваш vim не скомпилирован с помощью клипбордов, вы хотите скопировать выделенный текст вместо целых строк, вы не хотите устанавливать macvim или другой GUI, самое простое решение-добавить эту строку в свой .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

чтобы использовать его, просто визуально выберите текст, который вы хотите скопировать, а затем Control-C. Если вы хотите полное объяснение этой строки,читать здесь


Я только что попробовал

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

это сработало очень хорошо.


использовать доморощенного тут vim:brew install vim

Mac (по состоянию на 10.10.3 Yosemite) поставляется с предустановленной системой vim, которая делает не есть clipboard флаг включен.

вы можете либо скомпилировать vim для себя и включить этот флаг, либо просто использовать vim Homebrew, который настроен правильно.

чтобы увидеть это для себя, проверьте систему акций vim с /usr/bin/vim --version

вы увидите что-то например:

$ /usr/bin/vim --version

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov  5 2014 21:00:28)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...

Примечание -clipboard

С помощью vim homebrew вы вместо этого получаете

$ /usr/local/bin/vim --version

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI.  Features included (+) or not (-):
... +clipboard ...

Примечание +clipboard


command-C? Это, по крайней мере, работает для vim, запущенного из терминала.приложение для текста, выбранного с помощью мыши.


можно использовать MacVim когда вы находитесь на Mac, чтобы легко получить доступ к буферу обмена с помощью стандартных клавиш ОС.

Он также полностью обратно совместим с обычным Vim, поэтому мне даже не нужно иметь отдельный .vimrc.


Fakeclip реализует буферы + и*, если они не поддерживаются изначально.


моей главной проблемой была версия OSX по умолчанию VIM. Установка его через homebrew добавлено +clipboard для построения.

чека с

vim --version

если он говорит -clipboard или +clipboard


Если у вас есть опция +буфер обмена на вашей установке VIM (вы можете проверить с :версия), и вы находитесь в визуальном режиме, вы можете сделать " +y это будет дергать выбор в буфер + что такое буфер обмена.

Я добавил следующие карты в свой vimrc, и он отлично работает.

vmap y " +y С этим я могу сделать ключевые лидер за y копировать в буфер обмена в visual режим

nmap p " +p С этим я могу сделать ключевые лидер за p вставить из буфера обмена в обычном режиме.

PD: на Ubuntu мне пришлось установить vim-gtk, чтобы получить опцию +clipboard.


для пользователей Ubuntu пакет, который вы хотите получить для использования буфера обмена, является vim-полным. Другие пакеты (vim-tiny, vim) не включают функцию буфера обмена.


на mac когда что - то еще работает-Выберите с помощью мыши, щелкните правой кнопкой мыши выберите Копировать. уфф


в настоящее время я на OS X 10.9 и мои усилия по компиляции vim с +xterm_clipboard ничего мне не принес. Поэтому мое текущее решение-использовать MacVim в терминальном режиме с опцией set clipboard=unnamed в моем ~/.файл vimrc. Идеально подходит для меня.


я встречаю ту же проблему, после установки macvim все еще не работает, наконец, я нашел способ решить:

сначала попробуйте удалить все vim,

brew uninstall macvim

brew uninstall --force vim

и переустановите macvim

brew install macvim --with-override-system-vim

затем вы можете использовать "*y или "+y, не set clipboard=unnamed


то, что работало для меня в моем .vimrc

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif

копирование в буфер обмена с помощью регистра " + " или " * " не работает?

причина: ваша конкретная версия vim была скомпилирована без поддержки буфера обмена.Введите vim --verion на консоли, и вы увидите -xterm_clipboard. Установка vim с пакетами gui решает эту проблему. На ubuntu вы можете сделать это, набрав на shell:

sudo apt-get install vim-gui-common

теперь снова сделайте vim --version на консоли. Скорее всего, вы увидите +xterm_clipboard сейчас!!

Итак, теперь вы можете скопировать что-нибудь в буфер обмена с помощью register + (например, "+yy для копирования текущей строки в буфер обмена)


Command-c работает для меня как в MacVim, так и в терминале.