Копирование текста вне 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.