26 ответов:
The
*Регистрация сделает это. В Windows,+и*эквивалентны. В unix есть тонкая разница между+и*:под Windows, регистры * и + являются эквивалентными. Для систем X11, хотя, они отличаются. Для систем X11, * - это выбор, а + - буфер вырезания (например, буфер обмена). http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*is вероятно, что вы хотите большую часть времени, поэтому я использую*потому что он функционирует так, как я ожидаю, что в обеих средах.в дистрибутивах Linux по какой-то причине вам сначала нужно установить vim-gtk, чтобы получить функциональность буфера обмена.
и для тех, кто запутался в том, как использовать регистры при рывке или положить, вы просто пишете
"затем имя регистра. Так что для копирования чего-то в буфер обмена регистр вы набираете"*yа потом поставить вам типа"*p
На Mac OSX
копировать выделенную часть: визуально выделить текст (тип
vилиVв нормальных режим) и введите:w !pbcopyскопировать весь файл
:%w !pbcopyвставить из буфера обмена
:r !pbpasteOn большинствоLinux дистрибутивы, вы можете заменить:
pbcopyвышеxclip -i -sel cилиxsel -i -bpbpasteиспользуяxclip -o -sel -cилиxsel -o -b
-- Примечание:в случае, если ни один из этих инструментов (xselиxclip) предустановлены на вашем дистрибутиве, вы, вероятно, можете найти их в репозиториях
в ваш файл vimrc можно указать, чтобы автоматически использовать системный буфер обмена для копирования и вставки.
на Windows set:
set clipboard=unnamedна Linux set (vim 7.3.74+):
set clipboard=unnamedplusПримечание: возможно, вам потребуется использовать обновленную версию Vim для их работы.
использовать регистр
"+копировать в системный буфер обмена (т. е."+yвместоy).аналогично вы можете вставить
"+чтобы получить текст из системного буфера обмена (т. е."+pвместоp).
@Jacob Dalton упомянул об этом в комментарии, но никто, похоже, не упомянул в ответе, что vim должен быть скомпилирован с поддержкой буфера обмена для любого из предложений, упомянутых здесь, чтобы работать. Мой не был настроен таким образом на Mac OS X по умолчанию, и мне пришлось перестроить vim. Используйте эту команду, чтобы узнать, есть ли у вас это или нет
vim --version | grep 'clipboard'.+clipboardозначает, что вы хорошо, и предложения здесь будут работать для вас, в то время как-clipboardозначает, что вы должны перекомпилировать и пересобрать ВИМ.
подводя итоги и сделать его проще для новичков,
чтобы скопировать текущую строку, в командном режиме введите:
"*yyскопировать весь файл/буфер, в командном режиме, перейдите к началу через
ggтип"*yGкак уже отмечалось, для этого требуется
+clipboardизvim --version, которые указывают на наличие поддержки буфера обмена,-clipboardзначит нет.
Я не смог скопировать в систему буфера обмена, потому что у меня было это в моем ~/.файл vimrc:
if has('mouse') set mouse=a endifно если вы добавите эту строку дальше, это позволит вам просто Ctrl+c чтобы получить то, что вы выбрали в буфер обмена.
vmap <C-c> "+yоригинальное Обсуждение и более подробная информация:копировать текст из vim с помощью set mouse=a enabled
если вы используете vim в MAC OSX, к сожалению, он поставляется со старым verion и не соответствует параметрам буфера обмена. К счастью, доморощенный может легко решить эту проблему.
установить vim:
brew install vim --with-lua --with-override-system-vimустановите gui verion из vim:
brew install macvim --with-lua --with-override-system-vimперезагрузите терминал для вступления в силу.
добавьте следующую строку в ~/.vimrcset clipboard=unnamedтеперь вы можете скопировать строку в Vim с
yyи вставьте его в масштабах всей системы.
Обновленный Метод:я никогда не был удовлетворен установленным методом буфера обмена в течение многих лет. Самый большой недостаток это испортит историю буфера обмена, даже если вы используете
xдля удаления. Вот лучшее и более элегантное решение.
скопируйте текст [диапазон] vim в систему буфер. (Подсказка: используйте
vилиVчтобы сначала выбрать диапазон, а затем ввести двоеточие:для активации команды Ex)::[range]yank +
например,:5,10y *(копировать / дергать строки 5-10 в системный буфер обмена*Регистрация)вставьте содержимое из системного буфера обмена в vim на новой строке:
:put +
решение для меня было установить дополнительный vim, который имеет опцию буфера обмена включены:
sudo apt-get install vim-gnome
Если вы используете GVim, вы также можете
set guioptions+=a. Это вызовет автоматическое копирование в буфер обмена текста, который вы выделите в визуальном режиме.
Недостаток: обратите внимание, что продвинутые менеджеры буфера обмена (с историей) в этом случае получат всю вашу историю выбора...
Если ваш vim будет скомпилирован без
+xterm_clipboardопция, как это по умолчанию в Debian и я думаю Ubuntu, вы можете передать выбор или весь буфер во внешнюю программу, которая обрабатывает буфер обмена рабочего стола. Ибоxclip(который вам может понадобиться установить ранее), команда будет:w !xclip -sel clip
Для 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 install vim-gnome
проверьте еще раз с
vim --version | grep .xterm_clipboard -oи вы можете подтвердить буфер обмена теперь доступен (т. е. +xterm_clipboard)удачи.
вы можете найти ответы здесь Arch Wiki
Для Linux: Прежде всего, вы должны включить буфер обмена в вашей версии vim, установив
gvim.
Далее вы должны поставить эту строку на свой .
set clipboard=unnamedplus
может быть, кто-то найдет его полезным. Я хотел оставаться независимым от буфера обмена X и по-прежнему иметь возможность копировать и вставлять текст между двумя запущенными Vim. Этот маленький код сохраняет выделенный текст в temp.txt-файл для копирования. Поместите код ниже в свой .vimrc. Используйте сочетание клавиш Ctrl-С и ctrl-v, чтобы сделать работу.
vnoremap: w !cp/dev/null ~ / temp.txt & & cat > ~ / temp.txt
noremap: r !cat ~ / temp.txt
- поставить
set clipboard=unnamedв своемvimrc.- выберите, что вы хотите скопировать в
Visualрежим (нажмите v для входа).- на
Normalрежим (нажмите escape[esc]), нажмите y для копирования.- если вы хотите вставить что-то из буфера обмена ОС, нажмите p/P в Vim
Normalрежим.
если у вас есть xclip простой способ копирования текста в буфер обмена выглядит следующим образом:
- дергать текст, который вы хотите скопировать. (
yкоманда в vanilla vim)- тип
:call system("xclip -selection clipboard", @")
:call system()запускает команду терминала. Он принимает два аргумента: первый-команда,второй-что передать этой команде. Например:echom system("head -1", "Hello\nWorld")возвращает Привет (с подкладкой). echom возвращает вывод команды, call-нет.
xclip -selection clipboardпросто копирует текст в системный буфер обмена, а не в буфер обмена по умолчанию X (доступ к нему осуществляется с помощью средней кнопки moue).
@"возвращает последний восстановленный текст. "это регистр по умолчанию, но вы можете использовать любой регистр. Чтобы просмотреть содержимое всех регистров, типа:registers.
в vim только под терминалом ubuntu,
пресс
shift + drag mouseчтобы выбрать текст в vim, тоctrl + shift + cтерминалзатем
ctrl + vна другой редактор
Я Vim newby но, чтобы скопировать весь текст в системный буфер обмена (например, если вы хотите вставить его в текстовый процессор или другой текстовый редактор, как gedit, коврик для мыши и т.д...), в обычном режиме:
ggVGy
или, более просто:
:%y
как и предполагалось, я также установил vim-gtk и поставить
установить буфер обмена=unnamedplus
в моем .vimrc
и все работает отлично
Если вы хотите скопировать только часть текста, используйте визуальный режим (v) выберите текст, который вы хотите скопировать, и нажмите клавишу y.
наконец, я предлагаю программу буфера обмена, такую как Clipman (мой любимый), Clipit, Parcellite или аналогичный.
(Я использую vim 8.0 в Debian Stretch Xfce)
ПРОСТИ МЕНЯ ЗА МОЙ АНГЛИЙСКИЙ! : -)
Я написал простую строку в моем .vimrc, чтобы получить копию работы. Надеюсь, это кому-то поможет. К сожалению, мой vim не установлен с поддержкой буфера обмена, поэтому ни одно из этих предложений не сработало для меня. В принципе, вставьте эту строку в свой .vimrc:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>Если вы хотите читать подробности о том, что это делает, вы можете прочитать об этом на мой блог
для некоторых международных клавиатур, возможно, потребуется нажать "+пробел и
".Так что в этом случае вам придется нажать "пробел+y или "пробел*y
в случае, если вы не хотите использовать любой графический интерфейс для Vim и вы предпочитаете придерживаться эмулятор терминала может быть гораздо более простой подход к этой проблеме. Вместо того, чтобы использовать yank или что-то подобное, сначала взгляните на документацию терминала, который вы используете. Я боролся с той же проблемой (пытаясь использовать +буфер обмена и xclip и так далее), и в конце концов оказалось, что в моем эмуляторе терминала достаточно просто нажать shift и выбрать любой текст, который вы хотите скопировать. Вот и все. Достаточно просто и не нужно возиться с настройками. (Кстати, я использую urxvt).
Если вы подключаетесь к системе unix через putty, то выполните следующие действия, чтобы скопировать содержимое файла
- Выделите текст, который вы хотите скопировать (вы сможете копировать страницу за страницей )
- нажмите ctrl+c ( он скопирует текст в буфер обмена
- вставить в любой внешний редактор Сделано
selectingс помощьюmouseиright-click copyработала в моем случае.Я не хотел, чтобы номера строк были включены, поэтому я
:set nonumberдоcopying.
у меня была проблема, потому что мой 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 соответственно.
ничего выше не работало для меня на моем ноутбуке windows.
Ctrl+C было хорошо для копирования.. но мне нужно Shift+вставить вставить !
(хорошая причина, чтобы всегда получить ноутбук, где вставить всегда можно получить доступ без нажатия вторичной клавиши)
для 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"и теперь я Золотой
Comments