Чтобы убрать это сейчас и избежать путаницы... Это для Linux, работающего в Windows 10 (ubunutu), также известного как WSL. Это не то же самое, что cygwin и windows или отдельный linux. Это свой собственный зверь.
Поэтому, пожалуйста, помните об этом, прежде чем ссылаться на все статьи, которые я уже прочитал, или комментировать, что этот вопрос уже задавался ранее.
Кто-нибудь знает, как заставить копировать и вставлять работать из буфера обмена Windows ИЛИ эмуляции WSL Ubuntu Linux? Я использую set clipboard=unnamedplus
. Это не работает, независимо от того, какие комбинации я использую, например yy
, "+yy
и т. д.
Да, с vim-gtk
поддержкой +xterm_clipboard
.
решение1
(Изменение: апрель 2024 г.) С учетом последних новостей, WSL version: 2.1.5.0
похоже , что Win11
просто иметь set clipboard+=unnamedplus
сейчас достаточно neovim
, по крайней мере, с последними версиями Ubuntu из Microsoft Store.
(Изменено: октябрь 2020 г.) Для двустороннего буфера обмена neovim
я используюwin32yank
в течение нескольких месяцев без проблем. Поместите win32yank.exe
куда-нибудь в свой путь в Linux (подойдет любое место) и добавьте следующее в свой init.vim
.
set clipboard+=unnamedplus
let g:clipboard = {
\ 'name': 'win32yank-wsl',
\ 'copy': {
\ '+': 'win32yank.exe -i --crlf',
\ '*': 'win32yank.exe -i --crlf',
\ },
\ 'paste': {
\ '+': 'win32yank.exe -o --lf',
\ '*': 'win32yank.exe -o --lf',
\ },
\ 'cache_enabled': 0,
\ }
(Оригинальный ответ) Если вы просто хотите перенести данные из VIM в Windows, для WSL2 и Ubuntu 20.04,этот ответна Reddit у меня все отлично работало со стандартным VIM и стандартным WSL2 Ubuntu.
Вставьте следующее .vimrc
(например, в конец):
" WSL yank support
let s:clip = '/mnt/c/Windows/System32/clip.exe' " change this path according to your mount point
if executable(s:clip)
augroup WSLYank
autocmd!
autocmd TextYankPost * if v:event.operator ==# 'y' | call system(s:clip, @0) | endif
augroup END
endif
решение2
Это решениеу меня сработало, спасибо пользователю githubроббиев.
Для полноты картины приведу выдержку из его ответа:
- УстановитьVcXsrv (если запустится после установки, остановите).
- Запустите его с помощью недавно установленной программы.XLaunch(поиск в меню пуск).
Используйте все параметры по умолчанию и убедитесь, чтопараметры буфера обменапроверяются.
В конце сохраните конфигурацию в файл
config.xlaunch
(используйте это, чтобы начать с этого момента).Поместите export
DISPLAY=localhost:0.0
в.bashrc
bash для Windows и запуститеsource ~/.bashrc
в любом открытом терминале.Убедитесь, что vim установлен с поддержкой буфера обмена.
vim --version | grep clipboard
следует указать+clipboard
, а не-clipboard
. Также, если вы запускаете команду ex:echo has('clipboard')
в vim, а он сообщает,0
что поддержка буфера обмена не скомпилирована.Если у вас нет поддержки буфера обмена, установите пакет vim, скомпилированный с поддержкой буфера обмена, например
apt-get install vim-gtk
.Теперь вы можете получить доступ к системному буферу обмена Windows с помощью
"*p
и"*y
или установить его по умолчанию, поместивset clipboard=unnamed
туда свой.vimrc
файл.
Какроббиевупоминает, что теперь вы также сможете использовать буфер обмена Windows с удаленных компьютеров с помощью переадресации SSH X.
решение3
решение4
Если вы используете vim (или neovim), возможно, вам следует знать, ANSI OSC52
что это стандарт, который пытается решить проблему «копирования/вставки» (в особых случаях, например, в терминале SSH).
Тогда вот полезный плагинvim-oscyankкоторый реализует этот стандарт, и вам нужно просто установить этот плагин и задать для него сопоставление клавиш. Вам определенно стоит попробовать.