Kopiuj-wklej dla vima nie działa, gdy mysz (: set mouse = a) jest włączona?

52

Próbowałem skopiować i wkleić coś z vima do innej aplikacji, a także od tej aplikacji po vimkliknięcie prawym przyciskiem myszy, a następnie skopiuj i wklej (lub Ctrl+ vi Ctrl+, ca także Commandoczywiście wypróbowałem wersję dla systemu Mac OSX). Jednak kiedy próbuję to zrobić, kopiuje tylko pierwsze słowo, kiedy to robię vimlub kiedy kopiuję z aplikacji vim, kopiuje wszystko, ale wstawia dziwne tabulatory i spacje. Wydaje mi się, że tak się stało, kiedy zdecydowałem się ustawić mysz w terminalu. Jak w:

:set mouse=a

Mam ten wiersz w moim .vimrcpliku na iTerm (Mac OS X). Czy jest jednak możliwe, aby moja kopia wkleiła się z innymi aplikacjami, które nie są w vimstanie się zepsuć z mouse=awłączonym? Czy przynajmniej możliwe jest wyłączenie myszy podczas wklejania? Zrobiłem :helpmysz, ale komentarze nie były dla mnie przydatne. Wkleiłbym je tutaj, ale ... moje narzędzie do kopiowania jest zepsute!

Próbowałem :set mouse!i :set mouse=a!ale to nic nie przydatny ... :(


Dodatkowe informacje o moim środowisku:

Używam również tmux przez większość czasu, jednak testowałem ten błąd / błąd bez sesji tmux, dlatego opublikowałem to głównie jako pytanie vim.

Pinokio
źródło
4
Mogę powiedzieć, że vimjest w stanie szarpać się do selekcji podstawowej w porządku, używając yczasownika. Nie wiem, dlaczego po prostu tego nie użyjesz.
HalosGhost
1
Nie zrobiłbym tego, bo chyba nie wiem, jak to zrobić, przepraszam za moją niekompetencję. Nie wiedziałem nawet, że istnieje, dopóki o tym nie wspomniałeś. Podziel się swoją wiedzą! :)
Pinokio
Czy to macvim ?
Patrick
nie, to nie jest tylko iTerm (jak wspomniałem w pytaniu, ale dobre pytanie).
Pinokio

Odpowiedzi:

66

mouse=a zapobiega możliwości kopiowania i wklejania vima przy pomocy czytelnych znaków.

Zmień mouse=ana mouse=ri to powinno rozwiązać problem z tym.

Zastanawiam się tylko, czy zmieniasz plik konfiguracyjny swojego vima, gdy mysz jest ustawiona na mouse = a?

oryginalna odpowiedź ^

Jeśli mouse=rnie daje wszystkich opcji kopiowania przeszłości, zmień to namouse=v

Zarówno mouse=ri mouse=vmają te same funkcje, które są wymagające, ale w zależności od vimrc używasz będzie jeden lepiej potem drugą.

bgrif
źródło
próbowałeś też podświetlić tekst i użyć środkowego przycisku myszy, aby wkleić się w inne miejsce. który zwykle działa lepiej, gdy próbujesz Ctrl + v i Ctrl + c
bgrif
Nie wiem, co oznacza twoje pytanie: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?Masz na myśli, czy mam :mouse=aplik .vimrc? Mam :mouse=aw moim pliku .vimrc.
Pinokio
1
właśnie --with-x=yes? Nie muszę nic :set --with-x=yes mouse=aczy wkładać ? Czy możesz wyjaśnić, co masz na myśli?
Pinokio
1
Pozwól mi badania, jeśli chcesz połączyć --with-x=yessię set mouse=a. Kiedy czytałem o tym, wszystko co widziałem, to było to samo w pliku konfiguracyjnym. Ale może być inaczej, więc chcę się upewnić, że powiem ci właściwą rzecz, która będzie dla ciebie odpowiednia.
bgrif
1
Wielkie
21

Użytkownicy systemu OS X: Aby skopiować tekst, mouse=aużyj altzamiast zamiast Shiftzaznaczania tekstu. Wtedy cmd-ci cmd-vdziałać zgodnie z oczekiwaniami.

Znalazłem tę odpowiedź tutaj https://stackoverflow.com/a/4608387/671639 po wielu googlingach.

BetaRide
źródło
Jesteś Bogiem ......: ')
omerjerk
jedyna rzecz, która zadziałała dla mnie, dzięki!
Don
3
Dla mnie na OSX działa „fn” zamiast „shift” lub „alt”.
ssasa
6

Rozwiązanie Bharatha , naciskając Shiftpodczas kopiowania, zrobi to, ale skopiuje więcej niż to, co chciałbyś skopiować w przypadku numeracji lub skrótów.

Jednym ze sposobów, aby to zrobić, nawet za pomocą myszy = a, jest użycie trybu wizualnego przez naciśnięcie Vjednego kursora lub Shift+ Vdla podświetlenia pełnego wiersza, a można przesuwać w górę lub w dół za pomocą strzałek i używać Ydo kopiowania lub Dwycinania i to powinno działać.

amrx
źródło
@Anthon, zrobi, dziękuję za wyjaśnienie.
amrx
1
Przeredagowałem twój wymowny komentarz, aby uczynić go bardziej odpowiedzią w ten sposób mody prawdopodobnie go nie opuszczą (i możesz zyskać trochę reputacji, aby móc komentować). Gdyby oryginał był drobniejszą korektą, komentowanie byłoby bardziej odpowiednie.
Anthon
5

Miał ten sam problem: nie można wyróżnić za pomocą myszy, więc nie można skopiować i wkleić z VIM w sesji terminalowej do dokumentu systemu Windows i przeglądarki: Wykonano następujące czynności i teraz działa:

: set clipboard=unnamedplus
: set mouse=r
Kok
źródło
4

Zobacz: http://vimdoc.sourceforge.net/htmldoc/options.html

Spójrz na sekcję Uwaga na dole odnośnika:
Po włączeniu myszy nadal można używać przycisków myszy, trzymając wciśnięty klawisz Shift. Obejmuje to kopiowanie wklej za pomocą przycisków myszy.

*'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.
rabin utam
źródło
1
Dziękujemy za przekazanie referencji, ale czy odpowiada na pytanie ? Jeśli tak, czy potrafisz wskazać tę część cytatu, która przedstawia streszczenie rzeczywistej odpowiedzi?
G-Man mówi „Reinstate Monica”
0

Jeśli chodzi o drugą część pytania, w której określiłeś, że podczas wklejania z innych aplikacji do vim dodaje tabulatory / spacje. Spróbuj dodać to do wklejania zestawu ~ / .vimrc lub w vimie przed wklejeniem w trybie normalnym naciśnij „shift” + „:” i wpisz „ustaw wklej”

abhixec
źródło
0

Możesz użyć ydo kopiowania (szarpania) i pwklejania nawet przy :set mouse=austawionym ~/.vimrc. Użyj v+, arrow keysaby podświetlić tekst. Aby szybko skopiować całą linię, użyj shift+ y.

Myna Martin
źródło
0

Na moim Macu pomogły te dwie rzeczy:

  • : ustaw mysz- = a
  • fn + kliknięcie (zamiast shift lub alt)
randomcontrol
źródło
0

Użyj tych dwóch linii poniżej, ~/.vimrcaby użyć wszystkich fajnych funkcji a gui-mousei wklej do schowka systemowego za pomocą y(klawisz Yank), jeśli tak naprawdę nie potrzebujesz żadnych dodatkowych buforów schowka:

set mouse=a
set clipboard=unnamed
CeDeROM
źródło