Перейти к содержимому

Подсистема Windows Linux - заставить VIM использовать буфер обмена?

2

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

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

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

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

3 487 просмотров
dman спросил 8 лет назад
D 21

4 ответа

4

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

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

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

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

  5. Поместите экспорт DISPLAY=localhost:0.0в ваш .bashrcbash для 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.

Радость, когда вы (я) сталкиваетесь с той же проблемой 4 месяца спустя, Google, и ваше (мое) прошлое само помогает вам исправить это!

Aerows · 7 лет назад · 0
Aerows ответил 8 лет назад
A 131
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

нет, вся идея в том, чтобы использовать команды vim yy и не использовать мышь.

dman · 8 лет назад · 0
dwettstein ответил 8 лет назад
D 23
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для открытия сервера SSH conf.

Шаг 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столько просмотров, сколько вам нужно.

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

Как вы получаете Xlaunch для запуска VcXsrv? По умолчанию Синмин для меня

dman · 7 лет назад · 0
dhaupin ответил 8 лет назад
D 253
0

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

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

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

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

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

llinfeng ответил 7 лет назад
L 235