gvim: легкое копирование в системный буфер обмена - PullRequest
25 голосов
/ 26 декабря 2010

Я использую gVim в Ubuntu 10.10.Я хочу скопировать (восстановить) текст в системный буфер обмена, чтобы скопированный текст был доступен в других приложениях.

Это работает с "+y.Но я хочу, чтобы он работал с y.

Я попытался сопоставить y с "+y, но затем yy больше не работает (так как он производит "+y"+y).

Я также пытался :set clipboard=unnamed, но это работает только в другом направлении: текст в системный буфер обмена можно вставить с помощью p.

Ответы [ 5 ]

13 голосов
/ 31 декабря 2010

Вы пытались сопоставить с этой командой:

noremap y "+y

? Это отображение содержит серьезную ошибку: оно отображает y в нормальном, визуальном и операторском режимах, в то время как вам нужны только нормальный и визуальный режимы. Используйте следующее:

nnoremap y "+y
vnoremap y "+y

Также попробуйте set clipboard=unnamedplus (требуется минимум vim-7.3.74). set clipboard=unnamed работает в обоих направлениях, но устанавливает регистр «мыши» (*), который отличается от регистра буфера обмена (+).

11 голосов
/ 14 января 2013

Большинство онлайн-решений просто говорят вам сопоставить y с "+y. Но иногда проблема в том, что "+y даже не работает. Вам нужно проверить, с какими функциями скомпилирован ваш vim.

Попробуйте выполнить следующие действия:

  1. Откройте свой терминал, запустите vim –-version | grep xterm_clipboard
  2. Проверьте знак перед xterm_clipboard, если это + (знак плюс), перейдите к шагу 4.
  3. Если это - (знак минус), запустите sudo apt-get install vim-gnome, затем sudo update-alternatives –config vim, выберите vim.gnome в списке (вы должны использовать правильную команду, соответствующую вашей системе). Снова введите команду vim –-version | grep xterm_clipboard, теперь вы сможете получить + (знак плюс).
  4. Проверьте, использует ли системный буфер обмена регистр + (знак плюс) или * (знак звездочки), это зависит от используемой вами ОС, иногда они эквивалентны. Как проверить? Просто скопируйте случайный текст, затем откройте vim и введите :reg, проверьте, в каком регистре отображается только что скопированная строка. Если это + (знак плюс), добавьте set clipboard=unnamedplus к своему .vimrc. Если это * (знак зодиака), добавьте set clipboard=unnamed.
  5. Проверьте это. Скопируйте что-нибудь внутри vim, а затем введите :reg, чтобы проверить, изменился ли системный буфер обмена. Если это произойдет, вы получите то, что находится в этом регистре, когда вы вставите за пределы vim.
3 голосов
/ 01 января 2011

У меня та же идея, что и у вас, но я делал это годами.

nnoremap yy yy"+yy
vnoremap y ygv"+y

Обратите внимание, что теперь команда yy делает две вещи: сначала она дергается, чтобы зарегистрироваться как обычно, а затем она дергается до " регистр (системный буфер обмена). Команда y делает то же самое. Это потому, что я хочу сохранить несколько функций буфера обмена Vim.

Для вставки из системного буфера обмена у меня был noremap gp "+p (глобальное вставление), но теперь я использую отличный плагин Yankring.

2 голосов
/ 26 декабря 2010

Выберите некоторый текст в визуальном режиме , и он будет вставлен в системный буфер обмена (тот, где вы вставляете средний щелчок, я не могу вспомнить точное имя).

ЕслиВы set mouse=a можете использовать мышь для визуального выбора, как во многих других приложениях.

0 голосов
/ 31 марта 2015

В моем случае я иногда могу скопировать из gvim в системный буфер обмена, а иногда нет.Я нашел обходной путь, хотя я не понимаю основной проблемы.Если я копирую текст в другое приложение (например, в «Блокнот», как в Windows 7), я могу скопировать текст из gvim и вставить его в другое место.Похоже, мне нужно сделать это для каждой копии из gvim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...