У меня выделена область в Vim. Как я могу скопировать его в буфер обмена OS X?
(Буфер обмена OS X может быть записан через конвейер на /usr/bin/pbcopy
)
У меня выделена область в Vim. Как я могу скопировать его в буфер обмена OS X?
(Буфер обмена OS X может быть записан через конвейер на /usr/bin/pbcopy
)
В зависимости от того, какую версию Vim я использую, я могу использовать регистр +
для доступа к буферу обмена.
У «обмена буфером обмена Mac OS X» могут быть некоторые идеи, которые также подойдут вам.
"+
существует только для X11 (если вы не соберете vim с поддержкой + X11, которая установит сервер X11 XQuartz в OS X), в то время как OS X не использует X11 в качестве своей системы Windows.
- person nn0p; 27.11.2016
vim
и macvim
имеют + буфер обмена. А clipboard=unnamed
добавили в ~/.vimrc
? Похоже на настоящую боль, попробовал все обходные пути и в настоящее время должен использовать spacemacs, когда я знаю, что мне придется использовать глобальный буфер обмена :)
- person Nikolay Fominyh; 19.02.2017
vnoremap <silent><leader>y :<CR>:let @a=@" \| execute "normal! vgvy" \| let res=system("pbcopy", @") \| let @"=@a<CR>
- person hoodslide; 17.01.2019
Для MacVim и Windows Gvim просто добавьте в свой ~/.vimrc
следующее:
set clipboard=unnamed
Теперь все операции, такие как yy
, D
и P
, работают с буфером обмена. Нет необходимости ставить перед ними префикс "*
или "+
.
-v
(mvim -v
). У меня есть псевдонимы vim и mvim.
- person pk-nb; 29.07.2013
:echo has("clipboard")
говорит 1
, что имеет место для MacVim, и у меня есть vi
псевдоним, который запускает mvim -v
вместо
- person jdsumsion; 06.03.2015
:version
показывает вам -clipboard
, то сборка Vim не поддерживает функцию буфера обмена. Я говорил о MacVim, приложении с графическим интерфейсом.
- person George V. Reilly; 05.11.2015
Если буфер обмена включен, вы можете скопировать выбранную область в буфер обмена, нажав "*y
Чтобы узнать, включен ли он, запустите 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.
:echo has("clipboard")
. Если он показывает 0, он не скомпилирован. Если он показывает 1, это так.
- person ravron; 04.07.2013
brew install vim
- person Anton Koval'; 28.04.2015
vim
не, vi
, поэтому vi
по-прежнему запускает vim, включенный в OS X. Мне потребовалось время, чтобы понять, почему буфер обмена все еще не работает.
- person Johann; 12.08.2015
+clipboard
версия, но я установил --with-client-server
, который включает +x11
, и попытка скопировать / вставить в x11 в терминале vim на macOS не сработала :) Мне пришлось переустановить без +clientserver
.
- person jacwah; 26.07.2017
Вы можете визуально выделить текст и набрать :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
заключите в двойные кавычки звездочку (" *) перед тем, как любая команда yank скопирует результаты в буфер копирования. Это также работает для Windows и Linux.
В macos 10.8 vim компилируется с -clipboard
, поэтому для использования "*y
вам потребуется перекомпилировать. К счастью, brew install vim
легко скомпилирует новую версию, и она будет +clipboard
.
brew install vim
с обновлениями vi
, а не vim
. Так что после установки vim с помощью homebrew вам может потребоваться другой псевдоним.
- person shridharama; 26.01.2019
Выделите визуально текст и введите:
ggVG
!tee >(pbcopy)
Что мне кажется лучше, чем:
ggVG
:w !pbcopy
Поскольку он не высвечивает подсказку: «Нажмите ENTER или введите команду, чтобы продолжить».
В моем случае мне просто нужно было сделать:
:set mouse=v
посетите исходное решение на superuser.com
Если вы используете MacPorts, вы можете обновить свой VIM, включив поддержку буфера обмена, с помощью:
port install vim +x +x11
Теперь вы используете регистр "+
, чтобы скопировать текст прямо в буфер обмена Mac. Работает как шарм.
Если вы используете MacOS X:
$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]
Затем добавьте в свой .vimrc:
set clipboard=unnamed
Теперь вам просто нужно войти в vim и выполнить :%y
, чтобы все содержимое было скопировано в буфер обмена.
Используйте Homebrew 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 [email protected]
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
V
, затем :w !pbcopy
, и это сработало
- person davidpm4; 01.02.2016
Если ваш Vim не скомпилирован с буфером обмена, вы хотите скопировать выделенный текст вместо целых строк, вы не хотите устанавливать MacVim или другой графический интерфейс, самое простое решение - добавить эту строку в ваш .vimrc:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
Чтобы использовать его, просто визуально выделите текст, который хотите скопировать, а затем Control - C. Если вам нужно полное объяснение этой строки, прочтите "Как скопировать в буфер обмена на vim ".
Я использовал:
map <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>
Это сработало действительно хорошо.
Вы можете использовать MacVim на Mac, чтобы легко получить доступ к буферу обмена с помощью стандартного Ключи ОС.
Он также полностью обратно совместим с обычным Vim, поэтому мне даже не нужно иметь отдельный .vimrc
.
~/bin
, чтобы переопределить значения по умолчанию.
- person the Tin Man; 09.12.2019
команда-C? Это, по крайней мере, работает для vim, запущенного из Terminal.app для текста, выделенного с помощью мыши.
Fakeclip реализует буферы +
и *
, если они изначально не поддерживаются .
Моя основная проблема заключалась в версии Vim для OSX по умолчанию. Установка через homebrew добавила +clipboard
в сборку.
Вы можете проверить:
vim --version
чтобы узнать, написано ли там -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
.
В настоящее время я использую OS X 10.9, и мои попытки скомпилировать vim с помощью + xterm_clipboard ни к чему не привели. Итак, мое текущее решение - использовать MacVim в режиме терминала с опцией set clipboard=unnamed
в моем файле ~ / .vimrc. Идеально подходит для меня.
Что у меня сработало в моем .vimrc
set clipboard=unnamed
if has("unnamedplus") " X11 support
set clipboard+=unnamedplus
endif
Для Mac - удерживание клавиши option
, за которой следует ctrl V
при выделении текста, помогло.
Shift cmd c - установить режим копирования Перетащите мышь, выберите текст, cmd c, чтобы скопировать выделенный текст Cmd v, чтобы вставить
Для пользователей Ubuntu пакет, который вы хотите получить для использования буфера обмена, является vim-полным. Другие пакеты (vim-tiny, vim) не включают функцию буфера обмена.
Копирование в буфер обмена с использованием регистра «+» или «*» не работает?
Причина: ваша конкретная версия vim была скомпилирована без поддержки буфера обмена. Введите vim --verion на консоли, и вы увидите -xterm_clipboard. Установка vim с пакетами gui решает эту проблему. В Ubuntu вы можете сделать это, набрав в оболочке:
sudo apt-get install vim-gui-common
Теперь снова выполните vim --version на консоли. Скорее всего, вы сейчас увидите + xterm_clipboard !!
Итак, теперь вы можете скопировать что угодно в буфер обмена, используя регистр + (например, «+ yy, чтобы скопировать текущую строку в буфер обмена).
на Mac, когда кажется, что что-то еще работает - выберите мышью, щелкните правой кнопкой мыши, выберите копию. уфф
У меня та же проблема, после установки 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, так и в терминале.
"+y
. - person zx1986   schedule 04.07.2018+clipboard
или+xterm-clipboard
. Вы можете проверить это с помощьюvim --version | grep clipboard
. Это можно решить с помощьюbrew install vim --with-client-server
. - person LondonRob   schedule 04.07.2018~/bin
, а затем~/bin
может быть вставлена в ваш путь перед обычным установленным системой vim и синонимами. - person the Tin Man   schedule 09.12.2019alias vi='mvim -v'
2) Добавил следующее в ~ / .vimrc, который отображает Ctrl + c (не Cmd + c):vnoremap <C-c> "+y
3) Настроен Keyboard Maestro для ввода последовательности клавиш^c
(Ctrl + C) при работе в терминале (в моем случае iTerm2) .Это позволяет использовать Cmd + c для копирования текста в буфер обмена OSX, чтобы его можно было вставить в другие приложения OSX. - person Neil Griffin   schedule 16.01.2020