Копирование текста вне Vim с помощью set mouse = a enabled

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

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

enter image description here

Ответ 1

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

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

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

Ответ 2

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

Вы можете сопоставить его так:

:vmap <C-C> "+y

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

Если вы используете сеанс Putty, он автоматически копирует выбор. Если мы использовали опцию "set mouse = a" в vim, выбор с помощью Shift + Mouse перетаскивает текст автоматически. Необходимо проверить X-term.

Ответ 9

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

Ответ 10

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

Ответ 11

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

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

На OSX вы можете и, по-видимому, как правило, следует использовать Macvim. Вы можете сделать brew cask install macvim который есть у +clipboard.

Их у вас будет два VIMS.

~$ 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/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 вставит из регистра, известного как +.

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

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

Ответ 12

У меня сработало удержание смены при копировании и вставке с выделением

Ответ 13

В режиме ESC, когда установлено mouse = a, выберите текст с помощью мыши. Это позволит визуальный режим в vim. Затем вы можете нажать "y", чтобы вынуть выделенный текст и "p", чтобы вставить его туда, где вы хотите. Это происходит только внутри vim.