Скажем, у вас есть область, выбранная в vim. Как вы можете скопировать его в буфер обмена OS X?
(Подсказка: буфер обмена OS X можно записать в канал через /usr/bin/pbcopy
)
Скажем, у вас есть область, выбранная в vim. Как вы можете скопировать его в буфер обмена OS X?
(Подсказка: буфер обмена OS X можно записать в канал через /usr/bin/pbcopy
)
В зависимости от того, какую версию vim я использую, я могу использовать регистр + для доступа к буферу.
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 [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.
Вы можете визуально выбрать текст и набрать :w !pbcopy<CR>
Или вы можете включить следующие сопоставления клавиш в файле ~/.vimrc
. Они вырезают/копируют текст в визуальном режиме в буфер обмена операционной системы.
vmap <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>
double-quote asterisk (" *), прежде чем какая-либо команда yank выдержит результаты в буфер копирования. Это работает и для Windows, и для Linux.
На macos 10.8 vim скомпилирован с -clipboard
, поэтому для использования "*y
вам нужно будет
перекомпилировать. К счастью, brew install vim
легко скомпилирует новую версию
и это будет +clipboard
.
Визуально выберите текст и введите:
ggVG
!tee >(pbcopy)
Что я нахожу лучше, чем:
ggVG
:w !pbcopy
Так как он не высвечивает приглашение: "Нажмите ENTER или введите команду для продолжения"
Если вы используете MacPorts, вы можете обновить свой VIM, чтобы включить поддержку буфера обмена, используя:
установить порт vim + x + x11
Теперь вы используете регистр "+", чтобы вытащить текст прямо в буфер обмена Mac. Работает как шарм.
В моем случае я просто должен был сделать:
:set mouse=v
Если вы находитесь на MacOS X:
$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]
Затем добавьте в свой .vimrc:
set clipboard=unnamed
Теперь вам просто нужно быть в vim и сделать :%y
, чтобы весь контент был скопирован в ваш буфер обмена.
Используйте 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
Если ваш vim не скомпилирован с буферами обмена, вы хотите скопировать выделенный текст вместо целых строк, вы не хотите устанавливать macvim или другой графический интерфейс, самым простым решением является добавление этой строки в ваш .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>
Это сработало очень хорошо.
Команда-C? Это, по крайней мере, работает для vim, запущенного из Terminal.app для текста, выбранного с помощью мыши.
Вы можете использовать MacVim, когда вы находитесь на Mac, чтобы легко получить доступ к буферу, используя стандартные клавиши OS.
Он также полностью обратно совместим с обычным Vim, поэтому мне даже не нужно иметь отдельный .vimrc
.
Fakeclip реализует буферы + и *, если они не поддерживаются.
Моя основная проблема - это стандартная osx-версия VIM. Установка его через homebrew добавила +clipboard
в сборку.
проверить с помощью
vim --version
если он говорит -clipboard
или +clipboard
если у вас есть опция + clipboard на вашей установке VIM (вы можете проверить: версию), и вы находитесь в визуальном режиме, вы можете сделать "+ y. Это выдержит выделение в буфер +, который является буфером обмена.
Я добавил следующие карты в мой vimrc, и он отлично работает.
vmap y "+ y С этим я могу сделать лидерский ключ по y для копирования в буфер обмена в визуальном режиме
nmap p "+ p С этим я могу сделать лидерский ключ p для вставки из буфера обмена в обычном режиме. p >
PD: На Ubuntu мне пришлось установить vim-gtk, чтобы получить опцию + clipboard.
на mac, когда что-то еще работает - выберите с помощью мыши, щелкните правой кнопкой мыши, выберите копию. UFF
В настоящее время я на 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-full. Другие пакеты (vim-tiny, vim) не включают функцию буфера обмена.
Копирование в буфер обмена с использованием регистра '+' или '*' не работает?
Причина: Ваша конкретная версия vim была скомпилирована без поддержки буфера обмена. Введите vim -verion на консоли, и вы увидите -xterm_clipboard. Установка vim с пакетами gui решает эту проблему. На ubuntu вы можете сделать это, набрав на оболочке:
sudo apt-get install 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, так и в терминале.