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

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

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

Ответы [ 26 ]

5 голосов
/ 11 мая 2015

Использование Homebrew's 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 доморощенного вы вместо этого получаете

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

4 голосов
/ 03 июня 2015

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

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

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

4 голосов
/ 10 января 2014

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

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

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

2 голосов
/ 26 октября 2015

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

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

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

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

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

2 голосов
/ 09 мая 2015

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

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

vim --version

, если написано -clipboard или +clipboard

2 голосов
/ 26 мая 2009

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

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

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

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

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

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

0 голосов
/ 03 июня 2018

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

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif
0 голосов
/ 03 января 2014

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

...