Не могу скопировать в буфер обмена из Vim


28

Я использую Vim 7.3 под Linux Mint 13 (используя MATE) и не могу сохранить текст в системный буфер обмена. Я запускаю Vim в терминале и копирую текст из терминала с помощью CTRLINSERT. Когда я выбираю текст в Vim (с помощью мыши или в визуальном режиме), CTRLINSERTтекст не копируется. Кроме того, когда я щелкаю правой кнопкой мыши, Копирование становится серым. Кроме того, я не могу записать в системный буфер, нажав на соответствующий регистр с помощью команд vim. Тем не менее, я могу вставить в режиме вставки (используя SHIFTINSERTили вставив правой кнопкой мыши). Я также могу копировать текст напрямую из терминала, используя ту же технику, но не текст из Vim.

Вот мой текущий ~ / .vimrc . Соответствующая часть наиболее вероятна set clipboard=autoselect,unnamed,exclude:cons\|linux. Если я поставлю finishверхнюю часть моего ~ / .vimrc, у меня возникнет та же проблема, поэтому я думаю, что строка неправильная, но я пытался set clipboard=unnamedи вел себя так же.

Может ли быть другой конфигурационный файл, влияющий на поведение Vim? Как я могу изменить ~ / .vimrc, чтобы я мог копировать текст из Vim?

Ответы:


55

Я считаю, что ваша проблема с копированием вызвана:

mouse=a 

в вашем .vimrc Это устанавливает ваш vim в визуальный режим всякий раз, когда вы выбираете что-то с помощью мыши. И по какой-то безумной причине нельзя копировать в визуальном режиме. Вы можете обойти это, удерживая клавишу Shift при выборе текста, чтобы не переходить в визуальный режим, позволяющий использовать меню копирования.

или вы можете изменить на:

:set mouse=v

и копия будет работать снова. добавьте его в файл ~ / .vimrc, если хотите, чтобы он был постоянным


2
Хотя это могло бы на самом деле решить их проблему, объяснение того, почему это работает, было бы более полезным. Без этого ваш ответ просто говорит кому-то дважды нажать зеленую кнопку - это может сработать, а может и нет, но не просветит их.
voretaq7

Спасибо, что решили это. Объяснение, которое вы добавили после комментария voretaq7, также очень помогло!

Это работает и для Cygwin.
Дейв Джарвис

1
Этот режим будет подсвечивать все, поэтому, если я хочу скопировать несколько строк, я также копирую номера строк и все пустое пространство после каждой строки до конца экрана. Есть ли способ, чтобы он выбирал только соответствующий контент (как работает подсветка mouse=a)?
Денис

Хороший ответ. Просто плюс: больше режимов мыши здесь:help mouse
Dr Beco

10

sudo apt-get install vim-gtk вероятно, решит эту проблему для других Googlers.

Хороший старый vim в стиле терминала не имеет доступа к буферу обмена, который является частью системы X windows. Установка vim-gtkдает vim доступ, необходимый для изменения и просмотра буфера обмена.


2
Работает! В Debian Buster (теперь в тестировании) я установил ВИМ-GTK , а затем моя командная строка ВИМ в XTerm позволило мне использовать *и +буферы для доступа к х оконных буферов. Для установки vim-gtk используются альтернативы Debian vim -> /usr/bin/vim.gtk.
RobertL

0

Терминал ничего не знает о выборе vim, поэтому не ждите, что это поможет. Вам нужно будет собрать vim против X (например gvim -v), а затем восстановить и вынести из +реестра.


3
vim-gtkПакет в Ubuntu содержит буфер обмена поддержки (даже если выполняется , как vimв терминале).
Mgorven

Согласовано и подтверждено на Debian Buster (сейчас в тестировании). Я установил vim-gtk, а затем моя командная строка vim в xterm позволила мне использовать буферы * и + для доступа к буферам окна x. Установка vim-gtk использует альтернативы Debian для установки vim -> /usr/bin/vim.gtk.
RobertL

0

просто gvimна Arch Linux, если кто-то хочет знать. Кроме того, обратите внимание на neovimpython-neovim&& python2-neovimдля вас завершить меня поддержку, и т. Д.).


Попробуйте использовать gvim через ssh.
hopeseekr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.