Копирование текста за пределы Vim с помощью команды set mouse = a - PullRequest
202 голосов
/ 05 января 2011

После включения set mouse=a текст, скопированный внутри Vim, не будет вставляться за пределы Vim. Кто-нибудь знает, как это исправить?

Здесь выбор текста с помощью мыши включает визуальный режим и отключает опцию Copy во всплывающем меню:

enter image description here

Ответы [ 12 ]

385 голосов
/ 05 января 2011

Нажмите shift при выборе с помощью мыши. Это заставит выделение мыши вести себя так, как будто mouse=a не был включен.

Примечание: этот прием также применим к "вставке средней кнопки": если вы хотите вставить текст vim, который был выбран снаружи, нажмите shift , нажимая среднюю кнопку. Просто убедитесь, что режим вставки активирован, когда вы делаете это (вы также можете захотеть :set paste, чтобы избежать неожиданных эффектов).

OS X (mac): удерживайте alt / option при выборе ( источник )

45 голосов
/ 05 января 2011

Использовать "+ y . Вы все равно не должны использовать команду копирования терминала, потому что она копирует то, что видит терминал, вместо фактического содержимого.

Вы можете отобразить это какthis:

:vmap <C-C> "+y

А затем выделите что-нибудь с помощью мыши и нажмите Control-C , чтобы скопировать его.

Эта функция работает, только если Vim был скомпилирован+xterm_clipboard option. Запустите vim --version, чтобы узнать, есть ли у него.

17 голосов
/ 31 августа 2017

Вместо set mouse=a используйте set mouse=r в .vimrc

13 голосов
/ 10 сентября 2017

В OSX используйте fn вместо shift .

6 голосов
/ 14 апреля 2013

В Ubuntu можно использовать привязки X-Term для копирования и вставки внутри VIM (Ctrl-Shift-C и Ctrl-Shift-V) для текста, выделенного с помощью клавиши Shift.

5 голосов
/ 21 января 2016

Другой вариант OSX-Mac - снять флажок View->Allow Mouse Reporting (или нажать ⌘-R, чтобы переключить его.) Это позволяет переключаться между взаимодействием с мышью и выбором мыши, что может быть полезно при выборе и копировании / вставке нескольких битов.потому что вам не нужно держать клавишу-модификатор, чтобы сделать это.

Примечание для Multiline с номерами строк:

У меня обычно включены номера строк, так что это также будет копировать номера строк, если вывыберите несколько строк.Если вы хотите скопировать несколько строк без номеров строк, отключите номера с помощью :set nonu, а затем вы можете :set nu включить их снова после завершения копирования.

1 голос
/ 05 апреля 2018

Вы можете использовать :set mouse& в командной строке vim, чтобы включить копирование / вставку текста, выделенного с помощью мыши.Затем вы можете просто использовать среднюю кнопку мыши или shift insert , чтобы вставить ее.

0 голосов
/ 17 мая 2019

Параметры компиляции, с которыми был скомпилирован vim, являются частью проблемы. vim --version показывает это.

В OSX по умолчанию vim имеет значение -clipboard Но вам нужно +clipboard

На osx вы можете и, как правило, должны использовать macvim. Вы можете сделать brew cask install macvim У этого есть +clipboard.

У них будет два vim.

~$ ls -l /usr/bin/vim   <--- default vim
-rwxr-xr-x  1 root  wheel  1745984 15 Jul  2017 /usr/bin/vim

~$ ls -l /usr/local/bin/vim   <-- macvim, installed recently via that mentioned brew line. 
lrwxr-xr-x  1 apple  admin  42 16 May 23:32 /usr/local/bin/vim -> /Applications/MacVim.app/Contents/bin/mvim
~$ 

при запуске vim будет запускаться macvim, потому что /usr/local/bin должен быть до /usr/bin в пути, хотя вы можете проверить с помощью which vim.

запуск vim (для запуска macvim), это нормально, но вы можете сопоставить vi с macvim, потому что в противном случае запуск vi останется по умолчанию vim! Вы можете переписать или удалить (с помощью rm) и заново создать ссылку на sy sym с помощью ln. И чтобы сделать это без ошибки «операция не разрешена», вы должны (временно) отключить SIL. https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x.

macvim имеет +clipboard, как показано vim --version

Вот рабочий ~/.vim/vimrc только с необходимыми строками.

:set mouse=a
:map <leader>c "+y
:map <leader>v "+p

Ключ лидера по умолчанию - обратная косая черта.

Я прочитал предложение о том, что следует использовать клавишу-лидер ... (конечно, контроль имеет много ключей, которые уже используются, поэтому было предложено не использовать управление. Я не знаю, относится ли это также к командной клавише, но в любом случае ).

С этим упомянутым отображением \c сделает "+y, который скопирует из регистра, известного как +, в буфер обмена. И \v вставит из регистра, известного как +.

Так что это копирование / вставка, которая работает между окнами.

Для другой ОС может потребоваться "* вместо "+

0 голосов
/ 16 марта 2019

Я случайно объяснил, как отключить set mouse=a, когда перечитал вопрос и обнаружил, что ОП вообще не хочет его отключать.В любом случае, для тех, кто ищет, как отключить мышь (set mouse=) централизованно, я оставляю ссылку на свой ответ здесь: https://unix.stackexchange.com/a/506723/194822

0 голосов
/ 05 декабря 2018

эм ... Продолжайте нажимать Shift и затем щелкните правой кнопкой мыши

...