vim cut & paste funktioniert nicht in Stretch / Debian 9

32

Hier wurden einige VM-Server auf Debian 9 aktualisiert.

Jetzt sshkönnen wir bei Verwendung nicht zwischen Remote-Terminals kopieren und einfügen.

Der Cursor scheint die Bewegungen auszuführen und den Text zu markieren, wenn auch auf eine witzigere / andere Art als die übliche, aber nichts wird in die Zwischenablage kopiert, wenn Befehl-C / Befehl-V ausgeführt wird oder wenn Sie in das entsprechende Menü kopieren und einfügen .

Wir haben auch versucht, die Mausbewegungen mit Shift und anderen Tastaturkombinationen auszuführen, ohne dass dies zu positiven Ergebnissen geführt hätte.

Dies geschieht unter OS / X (Sierra und El Capitan) und unter Windows (auch mit mobaXterm-Terminals).

Die Situation ist auf das Bewusstsein von Vim zurückzuführen, eine Maus zu haben.

Nach anderen Fragen in Stack Overflow habe ich /etc/vim/vimrc.localmit set mouse="r"und erstellt set mouse="v. es hat nicht gut geklappt.

Endlich set mouse=""in der gleichen Datei eingerichtet, mit mäßigem Erfolg.

Es funktioniert jedoch auch nicht 100% der Zeit gut. Was kann noch getan werden?

Rui F Ribeiro
quelle
Warum sollten Sie die Mausunterstützung deaktivieren? Unter Windows kann ich in einer Putty-Sitzung problemlos kopieren und einfügen. Welchen Terminal-Emulator verwenden Sie auf einem Mac?
Alexej Magura
2
Das reguläre Terminal + die standardmäßig mitgelieferte ssh-Binärdatei; 2 weitere Kollegen beschweren sich ... Sie sind kopflose virtuelle Server, alle nur im Textmodus. Es ist eine große Sache für uns, dass Cut & Paste nicht richtig funktioniert.
Rui F Ribeiro
Ich würde empfehlen, etwas wie iTerm2 zu verwenden . Ich denke, das ist der einzige Terminal-Emulator, den ich verwendet habe, abgesehen von dem Retro-Begriff, den man im Apple Store bekommen kann, aber ich erinnere mich nicht, ob dieser das Kopieren und Einfügen über ssh unterstützt. Sie sollten jedoch weiterhin Bildschirmauswahlen kopieren können. Ich kann mich jedoch nur schwach an Probleme erinnern, als ich versuchte, Mist vom Terminal auf das System zu kopieren. Ich habe eine Reihe von Funktionen in meine .zshrc geschrieben, um dies zu vereinfachen, aber ich bin mir nicht sicher, ob Sie wirklich danach suchen zum.
Alexej Magura
1
Vielleicht kann jemand einen Antrag stellen, diese Änderung rückgängig zu machen (in Debian?), Um den mouse=Modus wiederherzustellen .
Steffen

Antworten:

36

Lösung ist in der Tat das Setzen der Option mouse=aauf mouse=r.

Das Problem beim Festlegen dieser /usr/share/vim/vim80/defaults.vimOption ist, dass sie bei jedem Update überschrieben wird. Ich habe lange gesucht und bin zu folgendem gelangt : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

Die Lösung besteht zunächst darin, lokale .vmrc-Dateien zu verwenden und dort festzulegen. Sie können also ~/.vimrcfür jeden Benutzer eine lokale .vimrc ( ) erstellen und dort Ihre Optionen festlegen. Oder erstellen Sie eine in, /etc/skeldamit diese automatisch für jeden neuen Benutzer erstellt wird, den Sie erstellen.

Wenn Sie jedoch lokale .vmrc-Dateien verwenden, müssen Sie dort alle Optionen festlegen, denn wenn es eine lokale gibt .vimrc, wird die defaults.vimüberhaupt nicht geladen! Und wenn es kein lokales gibt, werden .vimrcalle Ihre Einstellungen von überschrieben defaults.vim.

Ich wollte eine globale Konfiguration für alle Benutzer, die die Standardoptionen lädt und dann die Standardeinstellungen mit meinen persönlichen Einstellungen hinzufügt oder überschreibt. Glücklicherweise gibt es in Debian eine Option dafür: Die /etc/vim/vimrc.localwird nach der geladen /etc/vim/vimrc. So können Sie diese Datei erstellen und die Standardeinstellungen laden lassen, das erneute Laden verhindern (am Ende) und dann Ihre persönlichen Optionen hinzufügen:

Bitte erstellen Sie die folgende Datei: /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

(Beachten Sie, dass $VIMRUNTIMEder im obigen Snippet verwendete Wert wie folgt lautet /usr/share/vim/vim80/defaults.vim.)

Wenn Sie auch das "alte Kopieren / Einfügen-Verhalten" aktivieren möchten, fügen Sie am Ende dieser Datei die folgenden Zeilen hinzu:

" 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
quelle
4
Dies sollte die akzeptierte Antwort sein. Auch von Ihrem verlinkten Fehlerbericht denke ich, dass wir damit durchkommen können source $VIMRUNTIME/defaults.vim.
Alasdair
1
Endlich geschafft, diese großartige, großartige Arbeit einzusetzen! +1
Rui F Ribeiro
2
Arbeitet immer noch in Debian 10, nur mit source /usr/share/vim/vim81/defaults.vim
Rui F Ribeiro
25

Eine Möglichkeit, die Aufmerksamkeit der Maus zu verringern, scheint darin zu bestehen, die Konfiguration der Maus zu kommentieren.

In habe /usr/share/vim/vim80/defaults.vimich die mausspezifische Erkennung wie in auskommentiert:

" 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

(In diesen vim-Konfigurationsdateien wird "ein Kommentar ausgelöst).

Durch die Änderung konnten wir problemlos kopieren und wieder einfügen.

Ich bin mit den Kommentaren einverstanden, dass dies nicht die ideale Lösung ist, da sie in jedem Update überschrieben werden, sofern die Konfigurationsdatei nicht geschützt (oder umgeleitet) ist. Zu dieser Zeit war es aufgrund der Besonderheiten einer Version des Pakets oder der Konfiguration der Server, auf denen ich gearbeitet habe, die einzige, die funktionierte. Daher lasse ich diese Antwort hier, und sie sollte nur als letztes Mittel verwendet werden .

Rui F Ribeiro
quelle
2
IMO das ist eine schlechte Antwort! Wenn Sie Benutzer dazu ermutigen, eine Datei zu bearbeiten, die von der Paketverwaltung verwaltet wird, kann dies in Zukunft zu unerwarteten Problemen führen. @ I-GaLaXy-I Antwort ist vorzuziehen.
Jeremy Davis
1
@ JeremyDavis Ich stimme dir zu, das ist nicht die beste Lösung. Zu dieser Zeit war es das einzige, das aus einem unbekannten Grund funktioniert hat, und ich habe verschiedene Alternativen ausprobiert. Es ist jedoch mehr als eine Person, die mir jetzt sagt, dass die andere Lösung heutzutage funktioniert. Ich akzeptiere sie als die richtige Antwort. Ich habe damals Umleitungen verwendet und die Konfigurationsdatei wurde nicht überschrieben, aber das ist auch keine ideale Lösung.
Rui F Ribeiro
11

In der Vim-Dokumentation für die mouseOption heißt es

Das xterm-Handling der Maustasten kann weiterhin verwendet werden, indem die Umschalttaste gedrückt gehalten wird.

Stefan
quelle
Dank dafür. Ich benutze Vim seit Jahren und war mir dieser Funktion nicht bewusst. Ich habe Ihre Frage bearbeitet, um mehr der verfügbaren Formatierungsfunktionen einzubeziehen. Willkommen bei Unix & Linux !
Anthony G - Gerechtigkeit für Monica
1
Das Problem ist, dass ich Terminal in Mac und meine Betreiber putty / mobaXterm in Windows verwenden ... nicht xterm
Rui F Ribeiro
3

Sie können dies deaktivieren, ohne die Systemdateien zu ändern, /etc/vimrc.localindem Sie Folgendes erstellen und einfügen:

set mouse=
Geoffrey
quelle
In der Beta-Zeit hat es nicht durchgehend geklappt, werde es nochmal ausprobieren, danke.
Rui F Ribeiro
2
Das funktioniert nicht.
LtWorf
Siehe die Antwort von I-GaLaXy-I oben. Sie müssen defaults.vim explizit importieren und verhindern, dass es importiert wird.
Richard
Dies funktioniert auch für mich, obwohl ich es mit der Antwort von @ I-GaLaXy-I kombiniert habe (dh bearbeitet / erstellt /etc/vim/vimrc.local)
Jeremy Davis
für mich hat gut funktioniert , während in einem debian 9 Container ... legst du es einfach in ~ / .vimrc
Scott Stensland
1

Viele Leute schlugen vor, :set mouse=aaber ich fand heraus, dass nur :set mouse=rdas Kopieren und Einfügen in Vim unter Debian 9 möglich ist. Viel Glück!

David Yeager
quelle