Копирование-вставка для vim не работает, когда включена мышь (: set mouse = a)?


53

Я пытался скопировать вставить что-то из vim в другое приложение, а также, из этого приложения, vimиспользовать щелчок правой кнопкой мыши, а затем скопировать и вставить (или с Ctrl+ vи Ctrl+, cа также Command, очевидно, пробовал версию для Mac OSX). Однако, когда я пытаюсь сделать это, он копирует только первое слово, когда я делаю это vimили когда я копирую из приложения vim, он копирует все, но вставляет странные символы табуляции и пробелы. Я думаю, что это произошло, когда я решил установить свою мышь в терминале. Как в:

:set mouse=a

У меня есть эта строка в моем .vimrcфайле на iTerm (Mac OS X). Тем не менее, можно ли сделать мою копию вставить с другими приложениями, которые не в состоянии vimне порвать с mouse=aвключенным? Или, по крайней мере, можно отключить мышь, пока я копирую пасту? Я сделал :helpмышь, но комментарии не были полезны для меня. Я вставил бы их сюда, но ... мой инструмент копирования-вставки не работает!

Я попробовать :set mouse!и , :set mouse=a!но они не сделали ничего полезного ... :(


Дополнительная информация о моей среде:

Я также использую tmux большую часть времени, хотя я тестировал эту ошибку / баг без сеанса tmux, поэтому я разместил это в основном как вопрос vim.


4
Я могу вам сказать, что vimс помощью yглагола можно просто восстановить первичный выбор . Я не знаю, почему бы тебе не использовать это.
HalosGhost

1
Я бы не стал этого делать, потому что я не знаю, как это сделать, наверное, извиняюсь за свою некомпетентность. Я даже не знал, что это было, пока ты не упомянул об этом. Пожалуйста, поделитесь своими знаниями! :)
Буратино


нет, это не просто iTerm (как я уже упоминал в вопросе, но хороший вопрос).
Буратино

Ответы:


67

mouse=a предотвращает возможность копирования и вставки из vim с читаемыми символами.

Перейдите mouse=aна mouse=rи это должно решить вашу проблему с этим.

меня интересует одна вещь: вы меняете конфигурационный файл для вашего vim с помощью мыши, установленной как mouse = a?

оригинальный ответ ^

Если mouse=rне дает вам все копии прошлых вариантов, измените его наmouse=v

Оба mouse=rи mouse=vимеют те же функции, которые вам нужны, но в зависимости от того, какой vimrc вы используете, один будет работать лучше, чем другой.


Также вы попытались выделить текст и использовать среднюю кнопку мыши, чтобы пройти в другое место. это имеет тенденцию работать лучше, когда вы пытаетесь нажать Ctrl + v и Ctrl + c
bgrif

Я не знаю, что означает ваш вопрос: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?вы имеете в виду, если я :mouse=aвключил в мой файл .vimrc? У меня есть :mouse=aв моем файле .vimrc.
Буратино

1
просто --with-x=yes? Мне не нужно ставить :set --with-x=yes mouse=aили что-то? Не могли бы вы уточнить, что вы имеете в виду?
Буратино

1
Позвольте мне исследовать, если вам нужно объединиться --with-x=yesс set mouse=a. Когда я читал об этом, все, что я видел, было это само по себе в файле конфигурации. Но это может быть по-другому, поэтому я хочу убедиться, что говорю вам правильную вещь, которая будет работать для вас.
Bgrif

1
Большое спасибо, это предложение работает как очарование с мышью = v
Памунгкас Джаюда

21

Для пользователей OS X: скопировать вставку с mouse=aиспользованием altвместо выделения Shiftтекста. Тогда cmd-cи cmd-vработай как положено.

Нашел этот ответ здесь https://stackoverflow.com/a/4608387/671639 после долгих поисков.


Ты Бог ......: ')
omerjerk

единственное что у меня сработало, спасибо!
Дон

3
У меня на OSX работает «fn» вместо «shift» или «alt».
ссаса

8

С https://stackoverflow.com/questions/4608161/copy-text-out-of-vim-with-set-mouse-a-enabled/4608387

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

Это работает и было проверено рецензентами переполнения стека, которые приняли это как ответ :)


6

Решение Bharath , нажимающее Shiftпри копировании, сделает это, но оно скопирует больше, чем вы хотели бы скопировать в случае нумерации или хеш-комментариев.

Один из способов сделать это даже с помощью мыши = a - использовать визуальный режим, нажимая Vдля одиночного курсора или Shift+ Vдля выделения полной строки, и вы можете перемещаться вверх или вниз с помощью стрелок и использовать Yдля копирования или Dвырезания, и это должно работать.


@ Anthon, сделаю, спасибо за разъяснения.
amrx

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

5

Возникла та же проблема: не удалось выделить мышью, поэтому не удалось скопировать и вставить из VIM в терминальном сеансе в документ и браузер Windows: Выполнено следующее, и теперь оно работает:

: set clipboard=unnamedplus
: set mouse=r

4

См. Http://vimdoc.sourceforge.net/htmldoc/options.html.

Посмотрите на раздел «Заметки» в нижней части справочника:
при включении мыши можно по-прежнему использовать кнопки мыши, удерживая нажатой клавишу Shift. Это включает в себя копирование вставить с помощью кнопок мыши.

*'mouse'* *E538*
'mouse'         string  (default "", "a" for GUI, MS-DOS and Win32)
            global
            {not in Vi}
    Enable the use of the mouse.  Only works for certain terminals
    (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
    sysmouse and Linux console with gpm).  For using the mouse in the
    GUI, see |gui-mouse|.
    The mouse can be enabled for different modes:
        n   Normal mode
        v   Visual mode
        i   Insert mode
        c   Command-line mode
        h   all previous modes when editing a help file
        a   all previous modes
        r   for |hit-enter| and |more-prompt| prompt
    Normally you would enable the mouse in all four modes with:
        :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

    See |mouse-using|.  Also see |'clipboard'|.

    Note: When enabling the mouse in a terminal, copy/paste will use the
    "* register if there is access to an X-server.  The xterm handling of
    the mouse buttons can still be used by keeping the shift key pressed.
    Also see the 'clipboard' option.

1
Спасибо за предоставление этой ссылки, но отвечает ли она на вопрос ? Если да, то можете ли вы указать ту часть цитаты, которая это делает, представляя краткое изложение фактического ответа?
G-Man говорит: «Восстановите Монику»

0

Что касается второй части вашего вопроса, где вы указали, что при вставке из других приложений в vim он добавляет табуляции / пробелы. Попробуйте добавить это в ~ / .vimrc set paste или в vim перед вставкой в ​​обычном режиме, нажмите "shift" + ":" и введите "set paste"


0

Вы можете использовать yдля копирования (yank) и pвставить даже с :set mouse=aустановленным ~/.vimrc. Используйте v+, arrow keysчтобы выделить текст. Чтобы быстро скопировать всю строку, используйте shift+ y.


0

На моем Mac помогли две эти вещи:

  • : установить мышь- = a
  • Fn + клик (вместо Shift или Alt)

0

Используйте эти две строки ниже, ~/.vimrcчтобы использовать все полезные функции gui-mouseи вставьте в системный буфер обмена, используя y(клавиша yank), если вам не нужны какие-либо дополнительные буферы буфера обмена:

set mouse=a
set clipboard=unnamed
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.