Vim: копировать выделение в буфер обмена OS X



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



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

683   25  

25 ответов:

в зависимости от того, какую версию vim я использую, я могу использовать регистр + для доступа к буферу обмена.

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing могут быть некоторые идеи, которые работают и для вас.

на MacVim и Windows Gvim, просто добавьте следующее к вашему ~/.vimrc:

set clipboard=unnamed

теперь все операции, такие как yy,D и P работа с буфером обмена. Не нужно ставить перед ними префикс "* или "+.

если буфер обмена включен, вы можете скопировать выбранную область в буфер обмена, нажав "*y

чтобы увидеть, если он включен, o vim-версия и искать +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 в терминале.приложение, только в X11.приложение.

вы можете визуально выбрать текст и ввести :w !pbcopy<CR>

или вы можете включить ниже ключевых сопоставлений в вашем . Они вырезать/копировать текст в визуальном режиме в буфер обмена операционной системы.

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.

визуально выделите текст и типа:

ggVG
!tee >(pbcopy)

что я нахожу лучше, чем:

ggVG
:w !pbcopy

Так как он не мигает приглашение: "нажмите ENTER или введите команду, чтобы продолжить"

Если вы используете MacPorts, вы можете обновить VIM, чтобы включить поддержку буфера обмена через:

порт установки vim +x +x11

теперь вы используете " + register, чтобы дергать текст непосредственно в буфер обмена Mac. Работает как шарм.

в моем случае я просто должен был сделать :

:set mouse=v

пожалуйста, посетите оригинальное решение на superuser.com

Если вы находитесь на MacOS X:

$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]

затем добавьте к вашему .vimrc:

set clipboard=unnamed

Теперь вам просто нужно быть в ВИМ и :%y, чтобы все содержимое было скопировано в буфер обмена.

Если ваш vim не скомпилирован с помощью clipboards, вы хотите скопировать выделенный текст вместо целых строк, вы не хотите устанавливать 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>

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

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

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

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

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

чека с

vim --version

если он говорит -clipboard или +clipboard

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

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

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

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

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

для пользователей Ubuntu пакет, который вы хотите получить для использования буфера обмена, является vim-full. Другие пакеты (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 вы можете сделать это, набрав на оболочке:

sudo apt-get install vim-gui-common

теперь снова сделайте vim -- version на консоли. Скорее всего, вы бы увидели +xterm_clipboard сейчас!!

Итак, теперь вы можете скопировать что-либо в буфер обмена с помощью register + (например, "+yy для копирования текущей строки в буфер обмена)

Command-c работает для меня как в MacVim, так и в терминале.

Comments

    Ничего не найдено.