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

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

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

Ответ 1

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

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

Ответ 2

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

set clipboard=unnamed

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

Ответ 3

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

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

Ответ 4

Вы можете визуально выбрать текст и набрать :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

Ответ 5

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

Ответ 6

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

Ответ 7

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

ggVG
!tee >(pbcopy)

Что я нахожу лучше, чем:

ggVG
:w !pbcopy

Так как он не высвечивает приглашение: "Нажмите ENTER или введите команду для продолжения"

Ответ 8

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

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

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

Ответ 10

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

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

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

set clipboard=unnamed

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

Ответ 11

Используйте vim Homebrew: brew install vim

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

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

Чтобы убедиться в этом, ознакомьтесь со стандартной системой 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 [email protected]
Normal version without GUI.  Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...

Обратите внимание на -clipboard

С доморощенным vim вы вместо этого получаете

$ /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

Ответ 12

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

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

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

Ответ 13

Я просто попробовал

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

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

Ответ 14

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

Ответ 15

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

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

Ответ 16

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

Ответ 17

Моя основная проблема - это стандартная osx-версия VIM. Установка его через homebrew добавила +clipboard в сборку.

проверить с помощью

vim --version

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

Ответ 18

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

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

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

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

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

Ответ 19

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

Ответ 20

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

Ответ 21

Что сработало для меня в моем .vimrc

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

Ответ 22

Для Mac - удерживая клавишу option а затем ctrl V при выделении текста сделали свое дело.

Ответ 23

Shift cmd c - установить режим копирования. Перетащите мышь, выберите текст, cmd c, чтобы скопировать выделенный текст, Cmd v, чтобы вставить

Ответ 24

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

Ответ 25

Копирование в буфер обмена с использованием регистра '+' или '*' не работает?

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

sudo apt-get install vim-gui-common

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

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

Ответ 26

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

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

brew uninstall macvim

brew uninstall --force vim

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

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

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

Ответ 27

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