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>
двойные кавычки "звездочка" ("*), прежде чем любая команда 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
.
моей главной проблемой была версия 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 для копирования текущей строки в буфер обмена)