Vim, который поставляется с OSX , не имеет +clipboardили +xterm-clipboard. Вы можете проверить это с vim --version | grep clipboard. Это можно решить с помощью brew install vim --with-client-server.
LondonRob
1
Или используйте MacVim, который предлагает версию для командной строки, которая может быть вставлена в ваш путь по символической ссылке, ~/binа затем ~/binвставлена в ваш путь перед обычными vim и синонимами, установленными системой.
Оловянный Человек
Основываясь на том, что написал @ zx1986, я сделал три вещи: 1) Добавил следующее в мой ~ / .bashrc, чтобы псевдоним vi / vim к режиму терминала MacVim: alias vi='mvim -v'2) Добавил следующее в ~ / .vimrc, который отображает Ctrl + c (не Cmd + c): vnoremap <C-c> "+y3) Настроил Keyboard Maestro для ввода последовательности ^cклавиш (Ctrl + C) при работе в терминале (в моем случае iTerm2). Это позволяет использовать Cmd + c для копирования текста в буфер обмена OSX. чтобы его можно было вставить в другие приложения OSX.
Нил Гриффин
Ответы:
79
В зависимости от того, какую версию Vim я использую, я могу использовать +регистр для доступа к буферу обмена.
Для людей с VIM, скомпилированным без + буфера обмена, приведенная выше ссылка является отличным ресурсом, позволяющим обойтись без перекомпиляции VIM
sdjuan
ОЧЕНЬ ВАЖНАЯ ДЕТАЛИ !!! Если у вас есть Vim-версия 7.3, тогда это может не сработать, но если у вас есть Vim-версия 7.4, то это сработает (а иногда вам даже не нужно делать весь "+ y). И вы проверяете это просто запись> vim в терминале, а затем номер версии, когда вы запускаете его
"+Регистр существует только для X11 (если вы не строить ВИМ с поддержкой + X11, который установит сервер X11 XQuartz в OS X), в то время как OS X не использовать X11 в качестве окна системы.
nn0p
Что делать, если оба - vimи macvimесть + буфер обмена. И clipboard=unnamedдобавил к ~/.vimrc? Выглядит как настоящая боль, перепробовал все обходные пути и в настоящее время должен использовать spacemacs, когда я знаю, что мне придется использовать глобальный буфер обмена :)
Николай Фоминых,
240
Для MacVim и Windows Gvim просто добавьте следующее к своему ~/.vimrc:
set clipboard=unnamed
Теперь все операции , такие как yy, Dи Pработа с буфером обмена. Нет необходимости ставить перед ними префикс "*или "+.
Я провел все утро, выясняя, как отделить команды y, d и P от ⌘-C и ⌘-V, которые MacVim разрешает для вас, и, наконец, столкнулся с этим. Конечно же, я добавил это в свой vimrc, когда был несовершеннолетним vim, и с тех пор это меня расстраивало.
Джонатан Думайн
2
Для новичков в MacVim его можно использовать из терминала с -vфлагом ( mvim -v). У меня есть псевдоним Vim и Mvim.
рк-нб
3
Как упомянуто @VincentG в своем комментарии выше, это действительно работает с версиями Vim для терминалов, но для тех, кто использует tmux в терминале, необходимо следовать одному из решений, подробно описанных здесь: stackoverflow.com/a/11421329/456584
user456584
3
это должен быть принятый ответ - пока :echo has("clipboard")говорит 1, что это относится к MacVim, и у меня есть viпсевдоним, который работает mvim -vвместо этого
jdsumsion
1
@ Джозеф, если :versionпоказывает, -clipboardто сборка Vim не поддерживает функцию буфера обмена. Я говорил о MacVim - приложении с графическим интерфейсом.
Джордж В. Рейли
136
Если буфер обмена включен, вы можете скопировать выбранную область в буфер обмена, нажав "*y
Чтобы увидеть, включен ли он, запустите vim --versionи найдите +clipboardили -clipboard. Например, он не включен по умолчанию в моем окне 10.5.6:
% который vim
/ USR / бен / ВИМ
% vim - версия
VIM - Vi IMproved 7.2 (9 августа 2008 г., составлено 11 ноября 2008 г. 17:20:43)
Включенные патчи: 1-22
Составлено _www@b77.apple.com
Обычная версия без графического интерфейса. Включенные функции (+) или нет (-): ...
-clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + комментарии
...
Если бы он был скомпилирован +clipboard, я мог бы использовать "*регистр для доступа к системному буферу обмена.
Я скачал исходный код 7.2 и скомпилировал его (просто как tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install), и буфер обмена был включен:
% который vim
/ USR / местные / бен / ВИМ
% vim - версия
VIM - Vi IMproved 7.2 (9 августа 2008 г., составлено 24 марта 2009 г. 17:31:52)
Составлено rampion@Myrrhy.local
Обычная версия с GTK2 GUI. Включенные функции (+) или нет (-): ...
+ клиентский сервер + буфер обмена + cmdline_compl + cmdline_hist + cmdline_info + комментарии
...
Однако даже после компиляции я не смог скопировать в буфер обмена при запуске vim в Terminal.app, только в X11.app.
Я скомпилировал последнюю версию с + clipboard, и теперь нативный буфер обмена работает с ним как регистр *. Кроме того, установка «set clipboard = unname» в вашем файле .vimrc делает системный буфер обмена типичным. На самом деле я использовал github.com/adamv/homebrew/blob/duplicates/Library/Formula/… эту формулу доморощенного, чтобы построить и скомпилировать ее.
rado
Хм, я не уверен, почему Vim не появился в моем Homebrew, но я скопировал его в / usr / local / Library / Formula, запустил brew install vim, и это не удалось с "ld: библиотека не найдена для -lruby-static ». Я использую RVM и был на 1.8.7. Когда я переключился на 1.9.2, ошибка была "ld: библиотека не найдена для -lruby.1.9.1". Решением было использовать систему Ruby, сначала выполнив команду rvm use.
посмотрите
9
Немного проще, чем искать слово «буфер обмена» в том, что обычно представляет собой длинный список функций: делать :echo has("clipboard"). Если он показывает 0, он не скомпилирован. Если он показывает 1, это так.
Раврон
3
Вы также можете получить Vim с помощью буфера обмена с помощью homebrew: brew install vim
Антон Коваль
4
Осторожно! У меня была +clipboardверсия, но я установил, --with-client-serverкоторая позволяет +x11, и попытка скопировать / вставить в x11 в терминале vim на macOS не работает :) Мне пришлось переустановить без +clientserver.
Джаква
96
Вы можете визуально выбрать текст и набрать :w !pbcopy<CR>
Или вы можете включить приведенные ниже сопоставления клавиш в ваш ~/.vimrcфайл. Они вырезать / скопировать текст в визуальном режиме в буфер обмена операционной системы.
Вы также можете выбрать текст из командной строки, например: 1,10w! Pbcopy, чтобы скопировать строки 1-10 в буфер обмена. Символ w важен вместе с пробелом после него, чтобы сохранить оригинальный текст на месте. Ссылка на источник выше не работает, но здесь есть обсуждение: vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing
Обратите внимание, что это работает только для выделения целых строк. Кажется, это не работает, если вы хотите выбрать только часть строки. stackoverflow.com/questions/16196826/…
Кевин Уилер
1
@Kevin Wheeler: вы можете попробовать с помощью следующей команды, которая может решить не-копию копирования noremap <silent> <leader> y: <CR>: let @ a = @ "\ | execute" normal! vgvy "\ | let res = system (" pbcopy ", @") \ | let @ "= @ a <CR>
dragonxlwang
38
двойная кавычка звездочка ( "*) перед любой командой yank приведет к тому, что результаты будут скопированы в буфер копирования. Это работает для Windows и Linux тоже.
просто, кажется, испускает характер колокола и никакого другого эффекта для меня
--ıu
3
В X11 Vim "* является ПЕРВИЧНЫМ", + - CLIPBOARD, а SECONDARY не получает именованный регистр. (Не то, чтобы кто-нибудь использовал это ...)
ephemient
В совершенстве. Действительно помогает, особенно с выбором блока (Ctrl-V).
Соник
Поскольку вопрос был конкретно о Mac OS X, добавить, что он работает для Mac "тоже", не нужно.
Пол Томблин
@PaulTomblin хорошо, достаточно справедливо :-)
apprenticeDev
26
На macos 10.8 vim компилируется, -clipboardпоэтому для использования "*yвам нужно будет перекомпилировать. К счастью brew install vim, вы легко скомпилируете новую версию, и она будет +clipboard.
Что-то иметь в виду - довольно странно, brew install vimс обновлениями vi, а неvim . Так что вам, возможно, придется по-разному совмещать псевдонимы после установки vim с помощью homebrew.
Шридхарама
18
Визуально выберите текст и введите:
ggVG
!tee >(pbcopy)
Который я нахожу лучше, чем:
ggVG
:w !pbcopy
Так как не появляется подсказка: «Нажмите клавишу ВВОД или введите команду для продолжения»
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 ...
с версией vim от brew я смог сделать то, что хотел: я выделил строки, используя Vтогда, :w !pbcopyи это сработало
davidpm4
5
Если ваш Vim не скомпилирован с буфером обмена, вы хотите скопировать выделенный текст вместо целых строк, не хотите устанавливать MacVim или другой графический интерфейс, самое простое решение - добавить эту строку в ваш .vimrc:
Чтобы использовать его, просто визуально выделите текст, который вы хотите скопировать, а затем Control- C. Если вы хотите получить полное объяснение этой строки, прочитайте « Как скопировать в буфер обмена на vim ».
хороший наивный ответ , но выход ломается , если вы используете вертикально расщепленные подокна в Vim (что есть на самом деле я имею в виду), или если результат больше , чем один экран терминала
ʞɔıu
3
Вы правы, я не думал об этих случаях. Я оставляю свой ответ только для того, чтобы другие не давали похожие бесполезные ответы.
Mouviciel
2
Fakeclip реализует +и *буферы , если они изначально не поддерживаются.
если у вас есть +clipboardопция в вашей установке Vim (вы можете проверить с помощью :version) и вы находитесь в визуальном режиме, вы можете сделать "+yэто. Выделите выделение в буфер, +который является буфером обмена.
Я добавил следующие карты в мой vimrc, и он отлично работает.
vmap <leader>y "+y
: С этим я могу сделать leader keyпоследующие по yскопировать в буфер обмена в визуальном режиме.
nmap <leader>p "+p
: С этим я могу сделать leader keyпоследующие поp наклеить из буфера обмена в обычном режиме.
PD: В Ubuntu мне пришлось установить vim-gtk, чтобы получить +clipboardопцию.
В настоящее время я нахожусь на OS X 10.9, и мои усилия по компиляции vim с + xterm_clipboard ничего не принесли. Поэтому мое текущее решение - использовать MacVim в режиме терминала с опцией set clipboard=unnamedв моем файле ~ / .vimrc. Работает идеально для меня.
Для пользователей Ubuntu пакет, который вы хотите получить для использования в буфере обмена, заполнен vim. Другие пакеты (vim-tiny, vim) не включают функцию буфера обмена.
vim-full больше не является именем пакета Ubuntu. Пакет vim по умолчанию (7.3.154) имеет минимальный набор функций, включая -clipboard. Установка vim-gtk или vim-nox обеспечит + версию буфера обмена.
спазм
-1
Копирование в буфер обмена с использованием регистра «+» или «*» не работает?
Причина: ваша конкретная версия vim была скомпилирована без поддержки буфера обмена. Наберите vim --verion на консоли, и вы увидите -xterm_clipboard . Установка vim с пакетами gui решает эту проблему. В Ubuntu вы можете сделать это, набрав на shell:
sudo apt-get установить vim-gui-common
Теперь снова выполните vim --version на консоли. Скорее всего, вы бы сейчас увидели + xterm_clipboard !!
Итак, теперь вы можете скопировать что угодно в буфер обмена, используя register + (например, "+ yy для копирования текущей строки в буфер обмена)
Традиционное копирование и вставка не работает с буферами Vim и может полностью испортить ваше форматирование. Например, копирование 15 строк вложенных объектов с помощью Cmd + C, а затем вставка с помощью Cmd + V приведет к потере понимания вложенности. Скорее всего, это зависит от ваших настроек в вашем .vimrc и может быть очень конкретным
"+y
.+clipboard
или+xterm-clipboard
. Вы можете проверить это сvim --version | grep clipboard
. Это можно решить с помощьюbrew install vim --with-client-server
.~/bin
а затем~/bin
вставлена в ваш путь перед обычными vim и синонимами, установленными системой.alias vi='mvim -v'
2) Добавил следующее в ~ / .vimrc, который отображает Ctrl + c (не Cmd + c):vnoremap <C-c> "+y
3) Настроил Keyboard Maestro для ввода последовательности^c
клавиш (Ctrl + C) при работе в терминале (в моем случае iTerm2). Это позволяет использовать Cmd + c для копирования текста в буфер обмена OSX. чтобы его можно было вставить в другие приложения OSX.Ответы:
В зависимости от того, какую версию Vim я использую, я могу использовать
+
регистр для доступа к буферу обмена.« Совместное использование буфера обмена Mac OS X » может иметь некоторые идеи, которые также подойдут вам.
источник
"+
Регистр существует только для X11 (если вы не строить ВИМ с поддержкой + X11, который установит сервер X11 XQuartz в OS X), в то время как OS X не использовать X11 в качестве окна системы.vim
иmacvim
есть + буфер обмена. Иclipboard=unnamed
добавил к~/.vimrc
? Выглядит как настоящая боль, перепробовал все обходные пути и в настоящее время должен использовать spacemacs, когда я знаю, что мне придется использовать глобальный буфер обмена :)Для MacVim и Windows Gvim просто добавьте следующее к своему
~/.vimrc
:Теперь все операции , такие как
yy
,D
иP
работа с буфером обмена. Нет необходимости ставить перед ними префикс"*
или"+
.источник
-v
флагом (mvim -v
). У меня есть псевдоним Vim и Mvim.:echo has("clipboard")
говорит1
, что это относится к MacVim, и у меня естьvi
псевдоним, который работаетmvim -v
вместо этого:version
показывает,-clipboard
то сборка Vim не поддерживает функцию буфера обмена. Я говорил о MacVim - приложении с графическим интерфейсом.Если буфер обмена включен, вы можете скопировать выбранную область в буфер обмена, нажав
"*y
Чтобы увидеть, включен ли он, запустите
vim --version
и найдите+clipboard
или-clipboard
. Например, он не включен по умолчанию в моем окне 10.5.6:Если бы он был скомпилирован
+clipboard
, я мог бы использовать"*
регистр для доступа к системному буферу обмена.Я скачал исходный код 7.2 и скомпилировал его (просто как
tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install
), и буфер обмена был включен:Однако даже после компиляции я не смог скопировать в буфер обмена при запуске vim в Terminal.app, только в X11.app.
источник
:echo has("clipboard")
. Если он показывает 0, он не скомпилирован. Если он показывает 1, это так.brew install vim
+clipboard
версия, но я установил,--with-client-server
которая позволяет+x11
, и попытка скопировать / вставить в x11 в терминале vim на macOS не работает :) Мне пришлось переустановить без+clientserver
.Вы можете визуально выбрать текст и набрать
:w !pbcopy<CR>
Или вы можете включить приведенные ниже сопоставления клавиш в ваш
~/.vimrc
файл. Они вырезать / скопировать текст в визуальном режиме в буфер обмена операционной системы.источник: http://drydevelopment.com/blog/vim-pbcopy-on-os-x
источник
двойная кавычка звездочка ( "*) перед любой командой yank приведет к тому, что результаты будут скопированы в буфер копирования. Это работает для Windows и Linux тоже.
источник
На macos 10.8 vim компилируется,
-clipboard
поэтому для использования"*y
вам нужно будет перекомпилировать. К счастьюbrew install vim
, вы легко скомпилируете новую версию, и она будет+clipboard
.источник
brew install vim
с обновлениямиvi
, а неvim
. Так что вам, возможно, придется по-разному совмещать псевдонимы после установки vim с помощью homebrew.Визуально выберите текст и введите:
Который я нахожу лучше, чем:
Так как не появляется подсказка: «Нажмите клавишу ВВОД или введите команду для продолжения»
источник
В моем случае мне просто нужно было сделать:
пожалуйста, посетите оригинальное решение на superuser.com
источник
Если вы используете MacPorts, вы можете обновить VIM, чтобы включить поддержку буфера обмена через:
Теперь вы используете
"+
регистр, чтобы вытянуть ваш текст прямо в буфер обмена Mac. Работает как шарм.источник
Если вы используете MacOS X:
Затем добавьте в свой .vimrc:
Теперь вам просто нужно быть в vim и делать
:%y
, чтобы весь контент копировался в буфер обмена.источник
Используйте Homebrew's vim :
brew install vim
Mac (по состоянию на 10.10.3 Yosemite) поставляется с предустановленным системным vim, который не имеет
clipboard
включен флаг.Вы можете либо скомпилировать vim для себя и включить этот флаг, либо просто использовать vim Homebrew, который правильно настроен.
Чтобы убедиться в этом, ознакомьтесь со стоковой системой vim с
/usr/bin/vim --version
Вы увидите что-то вроде:
Обратите внимание
-clipboard
С vim доморощенного вы вместо этого получаете
Обратите внимание
+clipboard
источник
V
тогда,:w !pbcopy
и это сработалоЕсли ваш Vim не скомпилирован с буфером обмена, вы хотите скопировать выделенный текст вместо целых строк, не хотите устанавливать MacVim или другой графический интерфейс, самое простое решение - добавить эту строку в ваш .vimrc:
Чтобы использовать его, просто визуально выделите текст, который вы хотите скопировать, а затем Control- C. Если вы хотите получить полное объяснение этой строки, прочитайте « Как скопировать в буфер обмена на vim ».
источник
Я использовал:
Это сработало очень хорошо.
источник
Вы можете использовать MacVim когда вы на Mac, чтобы легко получить доступ к буферу обмена с помощью стандартных клавиш ОС.
Он также полностью обратно совместим с обычным Vim, так что мне даже не нужно иметь отдельный
.vimrc
.источник
~/bin
чтобы переопределить значения по умолчанию.Команда-C? По крайней мере, это работает для vim, запущенного из Terminal.app для текста, выделенного мышью.
источник
Fakeclip реализует
+
и*
буферы , если они изначально не поддерживаются.источник
Моей главной проблемой была версия Vim по умолчанию для OSX. Добавлена установка через homebrew
+clipboard
в сборку.Вы можете проверить с помощью:
чтобы увидеть, если он говорит
-clipboard
или+clipboard
.источник
если у вас есть
+clipboard
опция в вашей установке Vim (вы можете проверить с помощью:version
) и вы находитесь в визуальном режиме, вы можете сделать"+y
это. Выделите выделение в буфер,+
который является буфером обмена.Я добавил следующие карты в мой vimrc, и он отлично работает.
vmap <leader>y "+y
: С этим я могу сделатьleader key
последующие поy
скопировать в буфер обмена в визуальном режиме.nmap <leader>p "+p
: С этим я могу сделатьleader key
последующие поp
наклеить из буфера обмена в обычном режиме.PD: В Ubuntu мне пришлось установить vim-gtk, чтобы получить
+clipboard
опцию.источник
на Mac, когда что-то еще работает - выберите мышью, щелкните правой кнопкой мыши и выберите «Копировать». уфф
источник
В настоящее время я нахожусь на OS X 10.9, и мои усилия по компиляции vim с + xterm_clipboard ничего не принесли. Поэтому мое текущее решение - использовать MacVim в режиме терминала с опцией
set clipboard=unnamed
в моем файле ~ / .vimrc. Работает идеально для меня.источник
Что сработало для меня в моем
.vimrc
источник
Для Mac - удержание
option
клавиши с последующимctrl V
при выборе текста делало свое дело.источник
Shift cmd c - установить режим копирования. Перетащите мышь, выберите текст, cmd c, чтобы скопировать выделенный текст, Cmd v, чтобы вставить
источник
Для пользователей Ubuntu пакет, который вы хотите получить для использования в буфере обмена, заполнен vim. Другие пакеты (vim-tiny, vim) не включают функцию буфера обмена.
источник
Копирование в буфер обмена с использованием регистра «+» или «*» не работает?
Причина: ваша конкретная версия vim была скомпилирована без поддержки буфера обмена. Наберите vim --verion на консоли, и вы увидите -xterm_clipboard . Установка vim с пакетами gui решает эту проблему. В Ubuntu вы можете сделать это, набрав на shell:
sudo apt-get установить vim-gui-common
Теперь снова выполните vim --version на консоли. Скорее всего, вы бы сейчас увидели + xterm_clipboard !!
Итак, теперь вы можете скопировать что угодно в буфер обмена, используя register + (например, "+ yy для копирования текущей строки в буфер обмена)
источник
Я сталкиваюсь с той же проблемой, после установки
macvim
все еще не работает, наконец, я нашел способ решить:Попробуйте сначала удалить все vim,
brew uninstall macvim
brew uninstall --force vim
и переустановите macvim
brew install macvim --with-override-system-vim
Тогда вы можете использовать
"*y
или"+y
, не нужноset clipboard=unnamed
источник
Command-c у меня работает как в MacVim, так и в терминале.
источник