vim cut & paste nie działa w Stretch / Debian 9

33

Zaktualizowałem tutaj kilka serwerów VM do Debian 9.

Teraz podczas używania sshnie możemy kopiować i wklejać między zdalnymi terminalami.

Kursor wydaje się wykonywać ruchy i zaznaczać tekst, chociaż w zabawniejszy / inny sposób niż zwykle, ale nic nie jest kopiowane do schowka podczas wykonywania poleceń C / Command-V lub kopiowania i wklejania w odpowiednim menu .

Próbowaliśmy także wykonywać ruchy myszy za pomocą Shift i innych kombinacji klawiszy, bez pozytywnych rezultatów.

Dzieje się tak w systemach OS / X, a mianowicie Sierra i El Capitan, a także w systemie Windows przy użyciu terminali mobaXterm.

Sytuacja wynika z świadomości Vima na temat posiadania myszy.

Po innych pytaniach w przepełnieniu stosu utworzyłem za /etc/vim/vimrc.localpomocą set mouse="r"i set mouse="v; nie wyszło dobrze.

Wreszcie skonfiguruj set mouse=""w tym samym pliku, z niewielkim sukcesem.

Jednak nie działa również w 100% przypadków. Co jeszcze można zrobić?

Rui F. Ribeiro
źródło
Dlaczego chcesz wyłączyć obsługę myszy? W systemie Windows mogę dobrze skopiować i wkleić podczas sesji szpachlowania; jakiego emulatora terminali używasz na komputerze Mac?
Alexej Magura
3
Zwykły terminal + plik binarny ssh domyślnie; Narzekają jeszcze 2 koledzy z pracy ... To bezgłowe serwery wirtualne, wszystkie z nich, tylko tryb tekstowy. Nieprawidłowe działanie funkcji wycinania i wklejania jest dla nas bardzo ważne.
Rui F Ribeiro
Polecam użycie czegoś takiego jak iTerm2 , myślę, że to jedyny emulator terminala, którego użyłem oprócz retro terminu, który można dostać w sklepie Apple, ale nie pamiętam, czy ten obsługiwany kopiował i wklejał na ssh. Nadal powinieneś być jednak w stanie skopiować wybrane ustawienia ekranu. Nie pamiętam jednak, że miałem problemy z kopiowaniem bzdur z terminala do systemu. W moim pliku .zshrc napisałem kilka funkcji, które to ułatwiają, ale nie jestem pewien, czy tak naprawdę tego szukasz dla.
Alexej Magura
2
Może ktoś może złożyć wniosek o wycofanie tej zmiany (w debianie?) W celu przywrócenia mouse=trybu.
steffen

Odpowiedzi:

37

Rozwiązanie ustawienie opcji jest w rzeczywistości, mouse=ado mouse=r.

Problem z ustawieniem tego w /usr/share/vim/vim80/defaults.vimodpowiedzi, jak mówi zaakceptowana odpowiedź, polega na tym, że zostanie ona zastąpiona przy każdej aktualizacji. Długo szukałem i skończyłem na tym: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

Pierwszym rozwiązaniem jest użycie lokalnych plików .vmrc i ustawienie ich tam. Możesz więc utworzyć lokalną .vimrc ( ~/.vimrc) dla każdego użytkownika i ustawić tam opcje. Lub utwórz /etc/skelgo, aby był automatycznie tworzony dla każdego nowego użytkownika.

Ale kiedy używasz lokalnych plików .vmrc, musisz ustawić tam wszystkie opcje, ponieważ jeśli jest plik lokalny .vimrc, to defaults.vimwcale się nie ładuje! A jeśli nie ma lokalnego, .vimrcwszystkie twoje ustawienia są zastępowane defaults.vim.

Chciałem globalnej konfiguracji dla wszystkich użytkowników, która ładuje domyślne opcje, a następnie dodaje lub zastępuje wartości domyślne moimi ustawieniami osobistymi. Na szczęście istnieje taka opcja w Debianie: /etc/vim/vimrc.localzostanie załadowany po /etc/vim/vimrc. Możesz więc utworzyć ten plik i zezwolić na załadowanie ustawień domyślnych, zapobiec ich ponownemu załadowaniu (na końcu), a następnie dodać własne opcje:

Utwórz następujący plik: /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(Pamiętaj, że $VIMRUNTIMEużyty w powyższym fragmencie ma wartość podobną /usr/share/vim/vim80/defaults.vim).

Jeśli chcesz również włączyć „stare zachowanie kopiowania / wklejania”, dodaj również następujące wiersze na końcu tego pliku:

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction
I-GaLaXy-I
źródło
4
To powinna być zaakceptowana odpowiedź. Również z twojego powiązanego raportu o błędzie, myślę, że możemy uciec source $VIMRUNTIME/defaults.vim.
Alasdair,
1
W końcu udało się wdrożyć tę wspaniałą, wspaniałą pracę! +1
Rui F Ribeiro
2
Nadal działa w Debianie 10, tylko używając źródła /usr/share/vim/vim81/defaults.vim
Rui F Ribeiro
26

Jednym ze sposobów odcięcia vima od świadomości myszy wydaje się komentowanie konfiguracji myszy.

W /usr/share/vim/vim80/defaults.vimskomentowałem wykrywanie specyficzne dla myszy, jak w:

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(w tych plikach konfiguracyjnych vima „inicjuje komentarz).

Zmiana pozwoliła nam skopiować i wkleić ponownie bez żadnych problemów.

Zgadzam się z komentarzami, że nie jest to idealne rozwiązanie, ponieważ rzeczywiście jest nadpisywane w dowolnej aktualizacji, chyba że plik konfiguracyjny jest chroniony (lub przekierowany). W tym czasie i ze względu na specyfikę wersji pakietu lub konfiguracji serwerów, na których pracowałem, był to jedyny, który działał. W związku z tym zostawiam tę odpowiedź tutaj i powinna ona być stosowana wyłącznie w ostateczności .

Rui F. Ribeiro
źródło
2
IMO to zła odpowiedź! Zachęcanie użytkowników do edycji pliku obsługiwanego przez zarządzanie pakietami może w przyszłości nieoczekiwanie zepsuć się. @ I-GaLaXy-I odpowiedź jest lepsza.
Jeremy Davis
1
@JeremyDavis Zgadzam się z tobą, to nie jest najlepsze rozwiązanie. W tym czasie był to jedyny, który zadziałał z nieznanego powodu, a ja wypróbowałem kilka alternatyw. Jednak więcej niż jedna osoba mówi mi, że inne rozwiązanie działa obecnie, akceptuję to jako prawidłową odpowiedź. Korzystałem wtedy z dywersji, a plik konfiguracyjny nie został nadpisany, ale nie jest to również idealne rozwiązanie.
Rui F Ribeiro
11

Dokumentacja Vima dla mouseopcji mówi

Z Xtermowej obsługi przycisków myszy można nadal korzystać, trzymając wciśnięty klawisz Shift.

Stefan
źródło
Dziękuję za to. Używam Vima od lat i nie wiedziałem o tej funkcji. Zredagowałem twoje pytanie, aby uwzględnić więcej dostępnych funkcji formatowania. Witamy w systemach Unix i Linux !
Anthony G - sprawiedliwość dla Moniki
1
Problem polega na tym, że używam terminal w Mac i moje operatorów putty / MobaXterm w Windows ... nie xterm
Rui Ribeiro F
3

Możesz to wyłączyć bez zmiany plików systemowych, tworząc /etc/vimrc.locali wstawiając następujące elementy:

set mouse=
Geoffrey
źródło
W fazie beta to nie działało konsekwentnie, sprawdzi to jeszcze raz, dzięki.
Rui F Ribeiro
2
To nie działa.
LtWorf,
Zobacz odpowiedź I-GaLaXy-I powyżej. Musisz jawnie zaimportować plik defaults.vim i zapobiec jego importowaniu.
richard
To też działa dobrze dla mnie, chociaż połączyłem to z odpowiedzią @ I-GaLaXy-I (tj. Edytowaną / utworzoną /etc/vim/vimrc.local)
Jeremy Davis
działało dla mnie dobrze, gdy byłam w kontenerze debian 9 ... po prostu włóż go do ~ / .vimrc
Scott Stensland
1

Wiele osób sugerowało, :set mouse=aale zauważyłem, że :set mouse=rumożliwia tylko kopiowanie i wklejanie w Vimie na Debianie 9. Powodzenia!

David Yeager
źródło