Как скопировать в буфер обмена в Vim?

753

Можно ли скопировать в буфер обмена непосредственно из Vim? yyтолько копирует материал во внутренний буфер Vim. Я хочу скопировать в буфер обмена ОС. Есть ли такая команда в Vim, или вы можете только дергать вещи в Vim?

Хари Менон
источник
140
Пожалуйста, ознакомьтесь с недооцененным ответом, который проясняет важный факт: vim должен быть скомпилирован с функцией + буфера обмена, чтобы ЛЮБЫЕ из приведенных ниже предложений работали в первую очередь! Это НЕ по умолчанию на большинстве систем.
Нил Трэфт
7
@NeilTraft, некоторые ответы предполагают передачу сообщений от vim к внешним программам, поэтому утверждение, что ЛЮБОЙ ответ требует + флаг буфера обмена, неверно. Просто указываю, чтобы спасти будущих читателей от путаницы.
Hnatt
2
Возможный дубликат Как сделать vim вставить из (и скопировать) в системный буфер обмена? (Примечание: другой вопрос более новый, но имеет лучшие ответы ИМХО, поэтому я и отметил этот вопрос как
дурака
5
Убедитесь, что вы сделали, sudo apt-get install vim-gnome прежде чем применять эти команды ниже, или вы получите Invalid Register Error!
Harnirvair Singh
7
@Harnirvair Для многих читателей здесь, vim-gnomeвероятно, излишне или просто недоступно в их ОС / дистрибутиве, в то время как я подозреваю , что, скорее всего, они существуют и vim-gtkпредпочитают vim-gtk3меньше зависимостей, в то же время обеспечивая интеграцию с буфером обмена (по крайней мере, для тех, кто все еще работает на X11; Я не уверен, как все это взаимодействует с Уэйлендом).
underscore_d

Ответы:

498

*Регистр будет делать это. В Windows +и *эквивалентны. В Unix есть небольшая разница между +и *:

В Windows регистры * и + эквивалентны. Для систем X11 они отличаются. Для систем X11 * - это выделение, а + - вырезанный буфер (например, буфер обмена). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*это, вероятно, то, что вы хотите большую часть времени, поэтому я использую, *потому что он работает так, как я ожидаю, в обеих средах.

В дистрибутивах Linux вы должны сначала установить vim-gtk(aka gvim), чтобы получить функциональность буфера обмена. Это потому, что не-gtk vim обычно компилируется без поддержки X11. Это позволяет ему работать только на консольных компьютерах (часто на серверах).

А для тех, кто запутался в том, как использовать регистры во время рывков или выкладываний, вы просто пишете "имя регистра. Таким образом, для копирования чего-либо в регистр буфера обмена вы набираете, "*yа затем помещаете свой тип "*p(кредит: Кайл Мэтьюз)

Гейб Моутарт
источник
31
Не работает на Mac OSX LION. После нажатия «затем *» он издает тот шум, который делает Mac, когда вы не можете что-то сделать. Как мне сделать это на Mac?
Eddy
62
Вы также должны убедиться, что vim скомпилирован с поддержкой буфера обмена. Vim по умолчанию в Ubuntu - нет. Попробуйте, vim --version|grep .xterm_clipboard -oи если это так, у -вас нет поддержки. Загрузите другую версию в соответствии с ubuntuforums.org/showthread.php?t=1686955
Sparhawk
66
Если вы используете Linux, вы должны +зарегистрироваться. Например, если вы хотите скопировать три строки в системный буфер обмена, используйте такие команды, как v3j"+y, и затем вы можете вставить их в другое приложение или другой VIM. Использование *регистрации в Linux позволяет копировать и вставлять только между различными приложениями VIM.
Diabloneo
6
В Linux регистр * не работает для внешнего копирования и вставки.
weberc2
11
weberc2 и diabloneo, регистр * предназначен для буфера обмена выбора, доступ к которому можно получить по среднему щелчку, а не по вставке меню или ^ V
Джим Кинер,
354

На Mac OSX

  • скопировать выбранную часть: визуально выделите текст (введите vили Vв обычном режиме) и введите:w !pbcopy

  • скопировать весь файл :%w !pbcopy

  • вставить из буфера обмена :r !pbpaste

На большинстве дистрибутивов Linux вы можете заменить:

  • pbcopyвыше с xclip -i -sel cилиxsel -i -b
  • pbpasteиспользуя xclip -o -sel -cили xsel -o -b
    - Примечание: если ни один из этих инструментов ( xselиxclip ) не установлен в вашем дистрибутиве, вы можете найти их в репозиториях
Брайан
источник
1
+1 Работает с Lion, хотя vim --versionпоказывает-clipboard
roplacebo
26
совместим с Vim, который поставляется с Mavericks OSX. добавить в свой .vimrc vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Чтобы использовать это отображение, если вы хотите скопировать, выделите текст в визуальном режиме и нажмите Ctrl-c для копирования. Чтобы вставить из системного буфера обмена, нажмите Ctrl-v.
Давидтингсу
7
В Linux это работает с: w! Xclip -sel c или: w! Xsel -b
trve.fa7ad
4
Для Linux Ctrl + C копия: в ~ / .vimrc добавьте:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy
3
Гораздо более полезный ответ, чем принятый. Спасибо!
Брайс Джонсон
165

В вашем файле vimrc вы можете указать, чтобы автоматически использовать системный буфер обмена для копирования и вставки.

На Windows установлено:

set clipboard=unnamed

В Linux установлен (vim 7.3.74+):

set clipboard=unnamedplus

ПРИМЕЧАНИЕ. Для их работы может потребоваться обновленная версия Vim.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Гари Уиллоуби
источник
39
В качестве дополнения к вашей заметке - вам также может понадобиться установить дополнительные пакеты, чтобы заставить это работать. Если в вашем vim отсутствует эта +xterm_clipboardфункция (это видно при запуске vim --version). Это был случай для меня (работает Kubuntu 12.10). Мне пришлось установить vim-gui-commonпакет, чтобы получить правильную функциональность.
Джейкоб Далтон
4
set clipboard=unnamedработает в Mac OS 10.11.6 (El Capitan) с vim 7.4
Purplejacket
1. Скопируйте при перетаскивании мышью 2. выберите, работает в Mac Sierra-10.12.6 и vim-version: 8.0.1800, указав следующие команды в файле ~ / .vimrc set mouse=vиset clipboard=unnamed
dkb
set clipboard=unnamedработает над MacOS Catalina
Диего Сомар
Вы можете обновить свой ответ. Он не работает в Ubuntu 18.04 с vim 8.0.
Луис де Соуза
124

Используйте регистр "+для копирования в системный буфер обмена (т.е. "+yвместо y).

Также вы можете вставить из, "+чтобы получить текст из системного буфера обмена (т.е. "+pвместо p).

Amardeep AC9MF
источник
Я использую "*, но похоже, что разница только в X.
dash-tom-bang
3
@ dash-tom-bang: разница +/ против буферов копирования (не могу вспомнить, какой именно, atm)*SELECTIONPRIMARY
Дейнит
2
Да, звезда - это выбор, плюс - буфер обмена.
dash-tom-bang
6
Символ двойной кавычки служит селектором регистра в vi и vim.
Amardeep AC9MF
1
Два набора ярлыков для запоминания: "+yy(скопировать строку в буфер обмена) и "+yy(скопировать строку в выделение); "+p(вставить из буфера обмена) и "*p(вставить из выбора). "это выбрать регистр, который по умолчанию является собственным внутренним регистром vim (способ yyи pбудет работать без ссылки на регистр любого типа). PS: Интересно, есть ли в собственном внутреннем регистре Vim символ, похожий на "&yyкоторый yyпо умолчанию.
72

@Jacob Dalton упомянул об этом в комментарии, но, похоже, никто не упомянул в ответе, что vim должен быть скомпилирован с поддержкой буфера обмена для работы любого из упомянутых здесь предложений. Мой не был настроен таким образом на Mac OS X по умолчанию, и мне пришлось пересобрать vim. Используйте эту команду, чтобы узнать, есть ли она у вас или нет vim --version | grep 'clipboard'. +clipboardозначает, что вы хороши, и предложения здесь будут работать для вас, а -clipboardзначит, вам придется перекомпилировать и перестроить vim.

gkb0986
источник
15
Или вместо компиляции вы можете установить пакет vim, уже созданный с поддержкой буфера обмена. На OS X, Homebrew имеет это: brew install vim. На Ubuntu вы можете использовать sudo apt-get install vim-gnome. На других (не GNOME) дистрибутивах Linux вы можете установить vim-gtkили vim-athena.
Нил Трэфт
3
Спасибо, в Arch Linux мне пришлось удалить vimи установить gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber
В ваших ответах объясняется, почему янки не работают с буфером обмена, с одной только вашей информацией я мог бы улучшить поиск в Google и сделать так, чтобы он легко работал. И теперь это работает. Было бы лучше, если бы вы также добавили комментарий @NeilTraft в свой ответ, чтобы людям не нужно было выполнять поиск в Google.
Яна Агун Сисванто
На Mac сразу после того как brew install vimя добавил set clipboard=unnamedв .vimrc. Запустите source ~/.vimrcв командной строке. В .bash_profile я добавил, а alias vim="/usr/local/bin/vim"затем запустить source ~/.bash_profile. Теперь в vim просто используйте yи pдля копирования / вставки
Дмитрий
59

Подводя итоги и облегчая для новичков,

Чтобы скопировать текущую строку, введите в командном режиме:

"*yy

Чтобы скопировать весь файл / буфер, в командном режиме сначала перейдите в начало gg, а затем введите

"*yG

Как уже отмечалось, для этого требуется +clipboardout vim --version, что указывает на наличие поддержки буфера обмена, -clipboardзначит нет.

ryenus
источник
1
"*5yyговорит, 5 lines yankedно ничего в буфер обмена? OS / х.
Джавадба
2
Да, я подтвердил + буфер обмена
Javadba
nnoremap <leader>c "* in .vimrcдовольно неплохо работает как «копия», за которой следует движение, чтобы взять текстовый объект, который вы хотите скопировать в буфер обмена вашей ОС.
cpk
Спасибо, ты объяснил это именно так, как мне было нужно.
Симен Тиммерманс
3
Я установил, vim-gtkчтобы превратить -clipboardв +clipboard, чем "+yyработает.
Lai32290
30

Если вы используете vim в MAC OSX, к сожалению, он поставляется с более старой версией и не соответствует параметрам буфера обмена. К счастью, доморощенный может легко решить эту проблему.

установить vim:

brew install vim

установить графический интерфейс vim:

brew install macvim

перезапустите терминал для вступления в силу.


добавьте следующую строку в ~ / .vimrc
set clipboard=unnamed

теперь вы можете скопировать строку в vim yyи вставить ее в масштабе всей системы.



Обновленный метод :

Я никогда не был удовлетворен установленным методом буфера обмена в течение многих лет. Самый большой недостаток - это испортит вашу историю буфера обмена, даже когда вы используете xдля удаления. Вот лучшее и более элегантное решение.

  1. Скопируйте текст [range] vim в системный буфер обмена. (Подсказка: сначала используйте vили, Vчтобы выбрать диапазон, а затем введите двоеточие :для активации команды Ex):
    :[line-range]yank +
    например,
    :5,10y * (скопировать / восстановить строки 5-10 в *регистр системного буфера обмена )

  2. Вставьте содержимое из системного буфера обмена в vim на новой строке:
    :put +

Замечания:

  1. Если вы выберете диапазон слов, вышеописанное не будет работать. используйте "* y или " + y, чтобы сохранить этот визуальный блок в буфер обмена. Однако это трудно напечатать, я все еще думаю об альтернативах.
  2. : help "* или : help * + для получения дополнительной информации
  3. brew info vimсможет увидеть другие варианты установки vim. На данный момент у него нет других вариантов.
анонимный
источник
--with-override-system-vimдолжно быть--with-override-system-vi
Маффо
Я хотел бы попробовать это, чтобы избежать установки множества вещей Xorg на минимальные системы, но я что-то упустил. Я получаю «Не команда редактора [диапазон] yank +» после выбора в режиме v и затем нажимая «:».
jeremyjjbrown
29

Для Ubuntu - июль 2018

Используйте регистр «+» для копирования в системный буфер обмена (т. Е. «+ Y вместо y ).

Также вы можете вставить из "+", чтобы получить текст из системного буфера обмена (то есть "+ p вместо p ).

Вы также должны убедиться, что vim скомпилирован с поддержкой буфера обмена. Пытаться:

vim --version | grep .xterm_clipboard -o 

и если это -xterm_clipboard (минус префикс) , то вы не имеете поддержку.

Вот несколько инструкций по замене на рабочую версию vim с поддержкой буфера обмена.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autoremove (удаляет все посторонние пакеты зависимостей vim из системы)
  • $ sudo apt-get установить vim-gnome

Проверьте еще раз, vim --version | grep .xterm_clipboard -oи вы можете подтвердить, что буфер обмена теперь доступен (т.е. + xterm_clipboard )

Удачи.

arcseldon
источник
3
Ты сделал мой день или, может быть, мой месяц. После долгих лет работы с Vim без буфера обмена в Ubuntu это удивительное чувство. arcseldon, спасибо !!
evanrmurphy
Помимо того, что было описано выше, я должен был положить set clipboard=unnamedplusв свой .vimrcфайл для работы янки. Я использую Ubuntu 18.04.
Илия
23

Я не смог скопировать в систему моего буфера обмена, потому что это было в моем файле ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Но если вы добавите эту строку дальше, это позволит вам просто Ctrl+c получить все, что вы выбрали, в буфер обмена.

vmap <C-c> "+y

Исходное обсуждение и более подробная информация: Копировать текст из vim с помощью set mouse = a enabled

jcarballo
источник
3
Я не добавил строку в мой .vimrc, но предоставленная вами ссылка была очень полезной. Если вы удерживаете нажатой клавишу SHIFT при выборе текста в vim, вы можете копировать текст, не переходя в визуальный режим. Так что спасибо и +1.
Стефан ван ден Аккер,
Трюк переключения - то, что мне нужно. Также работает с редакторами, такими как терминатор, которые используют Ctrl + Shift + c для копирования во время запроса, что я и пытался вначале. Я установил -xterm_clipboard с vim.
Андерс
18

решение для меня заключалось в том, чтобы установить дополнительный vim с включенной опцией буфера обмена: 

sudo apt-get install vim-gnome
Алекс
источник
3
Это то, что я должен был сделать для Ubuntu 16.04. Я попробовал другие предложения без успеха. Это было самым легким и делало то, что я ожидал с "+ у.
Стивен Экхофф
Это работает как шарм без каких-либо изменений Vimrc! все еще действует в Ubuntu 16.04
makerj
"+yПредложение работал только с vim-gnome. Использование Linux Mint 18.2.
Самаурса
14

Если вы используете GVim, вы также можете set guioptions+=a. Это приведет к автоматическому копированию в буфер обмена текста, который вы выделите в визуальном режиме.
Недостаток: обратите внимание, что расширенные менеджеры буфера обмена (с историей) в этом случае получат всю вашу историю выбора…

Benoit
источник
13

Вы можете найти ответы здесь Arch Wiki

Для Linux: Прежде всего вы должны включить Clipboard в вашей версии vim, установив gvim.


Затем вы должны поместить эту строку в ваш .vimrcфайл.

set clipboard=unnamedplus

HOuadhour
источник
+1, удивился, что этот шаг сейчас требуется. Во всех моих предыдущих установках Arch мне не нужно было это делать.
Константинос
работал и для Ubuntu 18.04 и работает в tmux. Спасибо!
Джеймс Кляйн
10

Если ваш vim скомпилирован без +xterm_clipboardопции, как это было по умолчанию в Debian, и я думаю, Ubuntu, вы можете передать выделение или весь буфер во внешнюю программу, которая обрабатывает буфер обмена на рабочем столе. Для xclip(который может потребоваться установить ранее) команда будет:w !xclip -sel clip

Hnatt
источник
1
Спасибо за это - это не сработало для меня в Ubuntu (так что подтверждение вашего предположения об Ubuntu верное) целую вечность, и я не знал почему. Теперь я могу видеть -xterm_clipboardна флагах, показанных, когда я vim --version.
Jamesc
Это помогло мне найти хороший источник поддержки буфера обмена: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc
9

В VIM только под терминалом Ubuntu,

нажмите, shift + drag mouseчтобы выбрать текст в Vim, а затем ctrl + shift + cна терминале

тогда ctrl + vна другом редакторе

Супават Пусаванно
источник
3
Это работает, чтобы выбрать только то, что визуально в vim, что если вы хотите выбрать весь файл?
Gerep
@ Поддерживайте этот метод не для полного выбора файла. хорошо выбрать фрагмент текста только на терминале vim и там, где текст отображается на экране терминала.
Супават Пусаванно
1
Это копирует номера строк, границы буфера разделений и все, что видно, а не только текст / код.
Зельфир Кальцталь
9

Если у вас есть xclip, простой способ копирования текста в буфер обмена выглядит следующим образом:

  1. Янки текст, который вы хотите скопировать. (y команда в ванильном vim)
  2. Печатать :call system("xclip -selection clipboard", @")

:call system()запускает команду терминала Требуется два аргумента: первый - команда, второй - что передать этой команде. Например, :echom system("head -1", "Hello\nWorld")возвращает Hello (с некоторыми отступами). echom возвращает вывод команды, call - нет.

xclip -selection clipboard просто копирует текст в системный буфер обмена в отличие от стандартного буфера обмена X (доступ к которому осуществляется средней кнопкой moue).

@"возвращает последний восстановленный текст "является регистром по умолчанию, но вы можете использовать любой регистр. Чтобы просмотреть содержимое всех регистров, введите :registers.

Джон AZ1
источник
2
Это более надежно, оно работает, даже если vim не поддерживает поддержку буфера обмена и в любой ОС. Например, на Mac запустить :call system("pbcopy",@"). Можно связать эту команду с ключом.
ilija139
он работает нормально, но могу ли я положить его в свой vimrc, будет ли он работать. Это не работает для меня.
thenakulchawla
5

Этот ответ специфичен для пользователей MAC.

VIM по умолчанию, доступный с MAC, не идет с включенной опцией буфера обмена. Вам нужна эта опция для доступа к системному буферу обмена.

Чтобы проверить, включена ли эта опция в vim, используйте команду ниже

vim --version

В результате вы должны иметь +clipboard. Если это так -clipboard, то ваш VIM НЕ имеет возможности доступа к системному буферу обмена.

Вам нужно СДЕЛАТЬ и установить VIM с нужной вам опцией. Ниже приведены команды.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Выше будет установлен последний VIM с +clipboardвключенной опцией .

Теперь вам нужно установить системный буфер обмена. Добавьте следующую строку к~/.vimrc

set clipboard=unnamed

Теперь вы можете вернуть текст в системный буфер обмена. Ниже приведены шаги, чтобы объяснить, как дергать.

  1. В командном режиме vim press vэто переключит вас в режим VISUAL.
  2. Переместите курсор, чтобы выбрать текст или строки, которые нужно скопировать.
  3. Press y, это скопирует выделенный текст в буфер обмена.
  4. Зайди в любое внешнее приложение и CMD + vвставь.

Я использую MACBook Pro с MacOS Mojave и выше работает в нем.

Джозеф Куландай
источник
4

Может быть, кто-то найдет это полезным. Я хотел остаться независимым от буфера обмена X и по-прежнему иметь возможность копировать и вставлять текст между двумя запущенными vims. Этот небольшой код сохраняет выбранный текст в файле temp.txt для копирования. Поместите код ниже в ваш .vimrc. Используйте CTRL-c CTRL-v, чтобы сделать работу.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt

user4897781
источник
4
  1. Положи set clipboard=unnamedв свой vimrc.
  2. Выберите, что вы хотите скопировать в Visualрежиме (нажмите v, чтобы войти).
  3. Вернуться в Normalрежим (нажмите escape [esc]), нажмите y для копирования.
  4. Если вы хотите вставить что-то из буфера обмена ОС, нажмите p / P в Normalрежиме Vim .
BigPa
источник
4

Я новичок в Vim, но, чтобы скопировать весь текст в системный буфер обмена (например, если вы хотите вставить его в текстовый процессор или другой текстовый редактор, такой как gedit, коврик для мыши и т. Д.), В обычном режиме:

ggVGy

или, проще:

:% Г

Как и предполагалось, я также установил vim-gtk и поставил

set clipboard = unnamedplus

в моем .vimrc

и все отлично работает

Если вы хотите скопировать только часть текста, используйте визуальный режим (v) , выберите текст, который вы хотите скопировать, и нажмите клавишу y .

Наконец, я предлагаю программу с буфером обмена, такую ​​как Clipman (мой любимый), Clipit, Parcellite или аналогичную.

(Я использую vim 8.0 в Debian Stretch Xfce)

Прости меня за мой английский! :-)

Бертрандо Гойо
источник
3

У меня была проблема, потому что мой vim не поддерживал буфер обмена :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Я установил vim-gnome (который поддерживает буфер обмена), а затем снова проверил:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Теперь я могу копировать и вставлять, используя "+ y и" + p соответственно.

Ашутош Трипатия
источник
3

Я боролся с этим в течение многих месяцев до сих пор на MacOsX, используя сочетания клавиш. Я знаю, что вопрос не в использовании шортов для клавиатуры. Но это может помочь кому-то с тем же беспокойством.

Я обнаружил, что если вы снимите флажок:

View -> Allow Mouse Reporting

из меню терминала вы сможете скопировать в буфер обмена, используя

command + c

снова.

ИДТИ'
источник
2

Я написал простую строку в моем .vimrc, чтобы заставить работать копию. Надеюсь, это кому-нибудь поможет. Мой vim не установлен с поддержкой буфера обмена, к сожалению, поэтому ни одно из этих предложений не сработало для меня. В основном, вставьте эту строку в ваш .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Если вы хотите прочитать подробности о том, что это делает, вы можете прочитать об этом в моем блоге

Songz
источник
1
Покупатель, будь осторожен. На Mac это имеет странные последствия.
Азатар
похоже, что это ничего не копирует в буфер обмена при использовании в соответствии с инструкциями (в linux ubuntu 16.04, без поддержки буфера обмена), и если в сеансе vim открывается несколько файлов, закроется вкладка, на которой были выполнены действия (Visual Select и Cc ).
calocedrus
2

Для некоторых международных клавиатур вам может понадобиться нажать "+, Spaceчтобы получить ".

Так что в этом случае вам придется нажать "Space+yили"Space*y

Артур Ф
источник
2

Если вы не хотите использовать какой-либо графический интерфейс для vim и предпочитаете просто использовать эмулятор терминала, возможно, существует гораздо более простой подход к этой проблеме. Вместо того, чтобы использовать yank или что-то подобное, сначала взгляните на документацию терминала, который вы используете. Я боролся с той же проблемой (пытаясь использовать + clipboard, xclip и т. Д.), И в итоге оказалось, что в моем эмуляторе терминала достаточно просто нажать shift и выбрать любой текст, который вы хотите скопировать. Вот и все. Довольно просто и не нужно возиться с конфигурацией. (Я кстати использую urxvt).

alagris
источник
1

для OSX, как и в ответах 10342, приведенных выше, необходимо убедиться, что vim поддерживает функцию буфера обмена, поскольку тот, который поставляется с OSX, НЕ поддерживает буфер обмена, и что при запуске brew install vimон будет работать.

За исключением того, что запуск vi все равно заставит вас запустить предварительно поставленную версию OSX, а не ту, которую вы установили из brew.

чтобы преодолеть это, я просто присвоил моей команде vim версию brew, а не версию OSX по умолчанию:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

и теперь я золотой

abbood
источник
1

Моим решением было поместить следующую строку в .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

Сценарий копирует выбранную строку (через визуальный режим) или содержимое файла (если ни один не выбран) в буфер обмена, используя Ctrl + y. Я использую Manjaro Linux, если это имеет значение.

Матеус Балдиссара
источник
1

Я на Mac OSX (10.15.3) и новичок в Vim. Я нашел это настолько расстраивающим, и все ответы здесь слишком сложны и / или не относились к моей ситуации. Я закончил тем, что получил это работать двумя способами:

  1. отображение ключей, использующее pbcopy : работает со старой версией vim, которая поставляется с mac.

    Добавьте vmap '' :w !pbcopy<CR><CR>к вашему ~ / .vimrc
    Теперь вы можете визуально выбрать и нажать ''(два апострофа), чтобы скопировать в буфер обмена

  2. Установите более новую версию vim, чтобы я мог получить доступ к решению, наиболее рекомендованному в других ответах:

    brew install vim
    alias vim=/usr/local/bin/vim(следует добавить это к вашему ~ / .bashrc или эквивалентному)
    Теперь вы можете визуально выбрать и нажать, "+yyчтобы скопировать в буфер обмена

Dharam
источник
очень хорошее решение!
ABD
0

selectingс помощью mouseи right-click copyработал в моем случае.

Я не хотел включать номера строк, поэтому я :set nonumberраньше copying.

Акаша
источник
как это можно сделать в nerdTree
ji-
Это не имеет никакого отношения к vim и является исключительно копией на основе терминала в (X) буфер обмена.
Карло Вуд
Я не уверен, @ ji-ruh
Акаш
0

Ничто из вышеперечисленного не работает для меня на моем ноутбуке с Windows.

Ctrl+ Cбыл хорош для копирования ... но мне нужно было Shift+ Insertвставить!

(Хорошая причина всегда иметь ноутбук, где Insertвсегда можно получить доступ, не нажимая вторичную клавишу)

SherylHohman
источник
0

Shift+ Ctrl+ C если вы работаете в графическом режиме Linux, но сначала вам нужно выбрать то, что вам нужно скопировать.

введите описание изображения здесь

прости
источник