Есть ли способ скопировать блок текста в системный буфер обмена, чтобы я мог вставить его в другую программу?
cut-copy-paste
os-clipboard
thameera
источник
источник
cpip
,cpi{
.Ответы:
Для систем на основе X11 (т. Е. Linux и большинства других UNIX- подобных систем) есть два буфера обмена, которые не зависят друг от друга:
^C
и вставляется^V
(это как MS Windows).Системы OS X и Windows имеют только один буфер обмена.
Для систем X11 есть также ряд инструментов, которые синхронизируют эти буферы обмена для вас; поэтому, если они кажутся одинаковыми, возможно, у вас запущен один из них.
Vim имеет два специальных регистра, соответствующих этим буферам обмена:
*
использует ПЕРВИЧНЫЙ; Мнемоника: S деготь S Избранный (для копирования-on - s избранника)+
использует CLIPBOARD; мнемоника: CTRL PLUS C (для общего набора клавиш)В Windows и OS X нет разницы между
+
и*
, так как эти системы имеют только один буфер обмена, и оба регистра ссылаются на одно и то же (не важно, какой из них вы используете).Вы можете использовать эти регистры как любой регистр. Например, при использовании первичного буфера обмена
*
сy
иp
командами:"*yy
"*p
Вы можете использовать это как более удобное сочетание клавиш:
Если вы хотите «автоматически» взаимодействовать с системным буфером обмена вместо того, чтобы постоянно обращаться к нему вручную, вы можете установить
clipboard
переменную:unnamed
для использования*
(ПЕРВИЧНЫЙ, на выбор)unnamedplus
использования+
(CLIPBOARD,^C
)Теперь просто использование
yy
перейдет в буфер обмена системы, а не в безымянный регистр Vim, иp
вставит буфер обмена системы.Вы также можете назначить эти регистры, как и любой регистр
let
::let @+=42
:let @*=42
У
clipboard
настройки есть еще несколько опций (например, фильтры исключения); но это основы. Смотрите:help 'clipboard'
для полной истории ;-)GVim
Если вы используете gVim, вы можете получить поведение копирования при выборе
:set guioptions+=a
.Это включено по умолчанию в системах X11 (копирует в ПЕРВИЧНЫЙ), но не в MS Windows и OSX (так как выбор любого текста переопределит ваш буфер обмена).
Нет
+clipboard
?Vim требует
+clipboard
флаг функции, чтобы все это работало; Вы можете проверить, есть ли в Vim это, используя:echo has('clipboard')
Vim (если вывод есть0
, его нет , если1
он есть) или проверив выводvim --version
for+clipboard
.Большинство дистрибутивов Linux поставляются с «минимальной» сборкой Vim по умолчанию, которой нет
+clipboard
, но обычно вы можете установить ее:vim-gtk
илиvim-gnome
.vim-X11
и запуститеvimx
вместоvim
( подробнее ).gvim
(это будет включено и+clipboard
для обычногоvim
).Можно также использовать
xclip
,xcopy
илиxsel
копировать текст в буфер обмена; см. следующие вопросы для решения:SSH
Вы также можете использовать буфер обмена на удаленных компьютерах, если вы включаете пересылку X11 через SSH. Это особенно полезно с указанным выше советом, поскольку вы можете использовать его
xclip
для доступа к буферу обмена вашего рабочего стола. Vim на машине, с которой вы работаете, все еще нуждается в этой+clipboard
функции.Это требует
ForwardX11Trusted
настройки и должно выполняться только с доверенными серверами , поскольку это дает серверу практически полный контроль над сеансом X11:Чтобы сделать эти настройки постоянными (чтобы вам не нужно было добавлять их
-XY
каждый раз), вы можете сделать что-то вроде этого в вашем~/.ssh/config
:Neovim
Neovim обновил поддержку буфера обмена. Встроенный интерфейс был удален и заменен системой , которые требуют внешних утилит , таких как
xclip
,xsel
илиpbcopy
/pbpaste
.Следует автоматически подобрать эти утилиты и использовать их. На OS X
pbcopy
иpbpaste
должен быть доступен по умолчанию, на Linux вы, вероятно, хотите установитьxclip
, поскольку это наиболее широко доступно (на самом деле есть две версииxsel
с несовместимыми флагами . Это действительно глупо).Также смотрите
:help clipboard
в Неовим.источник
"<Space>
чтобы получить"
. Так что в этом случае вам придется нажимать"<Space>+y
или"<Space>*y
копировать."
можно выбрать множество именованных регистров."+
это не волшебство, это просто регистрация+
. Так, например, если вы хотите скопировать три вещи одновременно и вставить каждый из них один за другим, вы можете"1y
,"2y
и ,"3y
а затем"1p
,"2p
и"3p
. Это действительно мощный и не существует практически в любом другом редакторе. Другое интересное использование - просмотр сохраненных макросов. Например, если вы записываете с помощьюqq
, но понимаете, что вам нужно это исправить, вы можете: во временной строке"qp
исправить это и"qd
.Другие ответы касаются того, как скопировать текст из буфера в системный буфер обмена. Другая распространенная операция - копирование текста из другого регистра в буфер обмена. Например, если вы уже вставили некоторый текст в
"
(регистр по умолчанию), вы можете загрузить этот регистр в буфер обмена.Вы можете сделать это с
:let
:let @+=@"
- копирует регистр по умолчанию в буфер обменаlet @*=@"
- копирует регистр по умолчанию в основной выбор X11 («буфер обмена мышью»)let @+=@a
- скопировать из реестраa
в буфер обменаОбратите внимание, что это работает для регистров в целом:
let @a=@b
копии регистраb
для регистрацииa
.источник
С http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Это изменяет регистр Vim по умолчанию на
+
регистр, который связан с системным буфером обмена. От:h clipboard-unnamedplus
:источник
:version
в Vim, чтобы увидеть, появляется ли + X11 в списке включенных функций. Вы также можете проверить, доступна ли функция «unnamedplus».:if has('unnamedplus')⏎ echo 'yes'⏎ endif
Если вы не работаете в Linux, то вам следует использовать unamed вместо unnamedplus.В тех сборках, которые его поддерживают, указанный регистр
*
является системным буфером обмена. Чтобы скопировать текст из Vim в системный буфер обмена, вы можете выделить текст в визуальном режиме, а затем нажать, "*yчтобы скопировать его в системный буфер обмена.И наоборот, используйте "*pдля вставки текста из системного буфера обмена в Vim.
источник
Я рекомендую вам использовать Gvim и добавить это к себе
.vimrc
:Это обеспечивает поддержку для CtrlC, CtrlX, CtrlVкак блокнот в Windows.
Обратите внимание , что это будет также добавить некоторые другие общие ярлыки Windows , например, CtrlSдля
:w
, CtrlAдля выбора всех и т.д.источник
Если ваш vim не поддерживает,
+clipboard
вы можете использовать плагин fakeclip для Linux, Mac, Windows, tmux, screen, ...источник
Каждый второй ответ охватывает все важные вещи о регистрах. Я хотел бы добавить еще одну вещь, которую я использую.
В Vim есть способ напрямую скопировать визуально выбранный текст в буфер обмена. Просто поместите это в ваш файл vimrc :
И при этом всякий раз, когда вы визуально выделяете какой-то текст, он будет скопирован в ваш буфер обмена. Для получения дополнительной информации об этом,
:help guioptions
Кстати, это только для gVim.
источник
guioptions+=a
также упоминается в ответе Carpetsmoker.Вы также можете использовать глобальную команду, чтобы поместить определенный шаблон в буфер обмена. Это может быть полезно в ситуациях, когда информация разбросана по файлу, а ручное копирование подвержено ошибкам и утомлению.
Сначала очистите реестр, который будет получать информацию
Затем скопируйте в него все строки, содержащие шаблон
Наконец передача (копирование) информации в системный буфер обмена
если вы попытаетесь скопировать каждую строку, содержащую «шаблон», непосредственно в буфер обмена, он не будет работать, потому что буфер обмена не имеет возможности добавлять новый контент, поэтому мы используем здесь обычный регистр vim для хранения всех строк, содержащих шаблон сразу, а затем положить его в буфер обмена.
OBS: Необходимо подключить регистр перед его использованием, и использование версии регистра UPPERCASE позволяет нам добавлять контент, иначе он также не будет работать.
источник
Если вы не можете понять, как добраться
+clipboard
до работы, чего я не мог по какой-то причине, тогда вы можете сделать это.Предполагая, что вы хотите скопировать только часть файла, я делаю
shift
+,v
чтобы перейти в визуальный режим и выделить только те строки, которые хочу скопировать. Тогда я делаю это.объяснение
'<,'>
- означает, что вы использовали визуальный режим для выбора диапазона (вы его не вводите)w !{cmd}
- напишите диапазон к стандартуcmd
, см. больше в:help w_c
wl-copy
иxclip
программы, к которым вы можете передавать текст, и они добавят его в буфер обмена вашей системыКроме того, как только это входит в вашу историю, вам не нужно вводить все заново. Просто выберите в визуальном режиме, введите,
w
затем нажмите вверх, и команда должна завершиться автоматически. Кроме того, вам также не нужно использовать визуальный режим. Вы можете установить любой диапазон, который вы хотите.источник