4

Чтобы убрать это со стола и избежать путаницы ... Это для Linux, работающего в Windows 10(ubunutu), также известной как WSL. Это не то же самое, что Cygwin и Windows или автономный Linux. Это его собственный зверь.

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

Кто-нибудь знает, как заставить копирование и вставку работать из буфера обмена Windows ИЛИ эмуляции WSL Ubuntu Linux? Я использую set clipboard=unnamedplus . Это не работает, независимо от того, какие комбинации я использую, например, yy , "+yy и т.д.

Да, это vim-gtk с поддержкой +xterm_clipboard .

4 ответа4

3

Это решение сработало для меня, благодаря пользователю github robbiev.

Для завершения это отрывок из его ответа:

  1. Установите VcXsrv (если он запускается после установки, остановите его).
  2. Запустите его, используя только что установленную программу XLaunch (поиск в меню «Пуск»).
  3. Перейдите со всеми параметрами по умолчанию и убедитесь, что параметры буфера обмена отмечены.

  4. В конце сохраните конфигурацию в файл config.xlaunch (используйте его для запуска с этого момента).

  5. Поместите export DISPLAY=localhost:0.0 в ваш .bashrc в bash для Windows и запустите source ~/.bashrc в любом открытом терминале.

  6. Убедитесь, что vim установлен с использованием поддержки буфера обмена. vim --version | grep clipboard должен сказать +clipboard , а не -clipboard . Также, если вы запустите команду ex :echo has('clipboard') в vim и сообщит 0 нее не скомпилирована поддержка буфера обмена.

  7. Если у вас нет поддержки буфера обмена, установите пакет vim, скомпилированный с поддержкой буфера обмена, например, apt-get install vim-gtk .

  8. Теперь вы можете получить доступ к системному буферу обмена Windows через "*p и "*y или установить его по умолчанию, установив set clipboard=unnamed в ваш файл .vimrc .

Как упоминает Роббиев , теперь вы также сможете использовать буфер обмена Windows с удаленных компьютеров с использованием пересылки SSH X.

1

Если вы включили режим QuickEdit, вы можете просто выделить текст мышью и щелкнуть правой кнопкой мыши, чтобы скопировать его в буфер обмена.

Чтобы включить режим QuickEdit, просто щелкните правой кнопкой мыши на окнах консоли вверху и выберите « Свойства» (и / или « По умолчанию»), затем установите флажок «Режим QuickEdit».

РЕДАКТИРОВАТЬ: из коробки, в настоящее время невозможно скопировать из VIM в буфер обмена Windows. Однако в GitHub-Issue в репозитории WSL некоторые ребята, похоже, нашли способ сделать это, используя Xming или VcXsrv соответственно: https://github.com/Microsoft/WSL/issues/892#issuecomment-275873108.

РЕДАКТИРОВАТЬ 2: Еще одна попытка использования .vimbuffer: https://stackoverflow.com/questions/44480829/how-to-copy-to-clipboard-in-vim-of-bash-on-windows

1

Есть много причуд с терминалом WSL, но использование перекрестного копирования / вставки Vim в моей книге вызывает наибольшее раздражение. Ничто из того, что я пробовал по состоянию на апрель 2018 года, не работало для вставки в Vim или другие области (с использованием нормального здравого смысла), поэтому давайте пока попробуем обойти проблему и другие, связанные с буфером. Это не прямое решение WSL, а обходной путь, использующий лучший терминал + SSH, пока MS не предоставит исправление.

Putty или расширенная вилка Kitty предлагают более надежный терминал по сравнению с WSL. Мы можем подключиться к WSL (или любому другому вашему серверу), используя SSH через localhost, используя собственный порт, и получить более полнофункциональный терминал, включающий почти все возможности Vim для двунаправленного или собственного вставки, прокрутки и т.д. [Возможно, вам придется настроить Vim conf, чтобы активировать все возможности].

Для Putty/Kitty требуется SSH-сервер, доступный в WSL, на настраиваемом локальном порте. Если вы еще не настроили локальный SSH-сервер на WSL, вот краткий обзор того, как:

Шаг 1) Откройте терминал Ubuntu WSL, выполните sudo su для аутентификации от имени пользователя root, запустите vim /etc/ssh/sshd_config чтобы открыть conf сервера SSH.

Шаг 2) Ищите "Порт" рядом с первой горсткой линий. Может быть установлено до 22. Нам нужно установить собственный порт для нашего WSL SSH, который не конфликтует. Хит i редактировать. Давайте использовать порт 9977 для примера.

Шаг 3) Если вы разработчик или вам не нужно беспокоиться о ключах для вашего SSH локального хоста, ищите аутентификацию по паролю. Вы можете установить PasswordAuthentication yes . Иначе, ключи и более высокий уровень безопасности или открытый доступ через брандмауэр (ы) на WSL выходят за рамки этого ответа.

Шаг 4) Когда закончите редактирование, нажмите esc, чтобы выйти из режима редактирования, затем сохраните и выйдите из файла :wq . Перезапустите службу ssh с помощью service ssh restart . Оставьте WSL открытым на этом этапе в качестве главной консоли.

Шаг 5) Создайте новый сеанс Putty/Kitty, подключитесь к localhost, используя свой пользовательский порт (9977 в нашем примере). Войдите с вашими учетными данными WSL, sudo su если вам нужен root. Теперь у вас должна быть гораздо более надежная оболочка. Повторите или screen столько просмотров, сколько вам нужно.

Я знаю, что это не прямой ответ, но, по крайней мере, пока это решение :)

1

Частичное решение через ConEmu

Не уверен, почему никто не упомянул ConEmu. Он может как минимум обрабатывать половину проблемы с буфером обмена:

  • Чтобы вставить содержимое буфера обмена Windows в WSL, обычные Ctrl + V сделают все правильно.

    • Один из преимуществ заключается в следующем: если нужно скопировать абсолютный путь в Windows, при вставке в ConEmu c:/users/name будет транскрибироваться в /mnt/c/users/name . Это работает через WSL изначально.
  • Для копирования из WSL сейчас мне все равно придется использовать свой домашний курсор. Это работает более чем в 90% случаев.

В моем случае я не склонен много копировать из WSL; и очень наслаждался помощью ConEmu.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .