vim 8.0: Kopieren von Texten mit der Maus, grrr

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 03.02.2017 18:57:02

Ich setze gerade ein Skylake-Notebook mit Debian/Stretch auf, was bislang überraschend problemlos vorankommt.

Dafür nervte mich gerade eine Kleinigkeit, wo ich am wenigsten ein Problem erwartet hätte: Ich liebe auf einem Linux-Desktop die Möglichkeit, per Maus einen Text im vim-Editor zu markieren und mit der mittleren Maustaste wieder irgendwo fallen zu lassen. Mache ich unter Debian schon ewig so. - Geht plötzlich nach der frischen Installation von vim unter Stretch aber nicht mehr :-/

Natürlich gibt es unter Debian immer einen Weg, aber ich musste erst etwas suchen, deshalb schreibe ich es hier mal ins Forum. Neuerdings sind die defaults in einem neuen file /usr/share/vim/vim80/defaults.vim. Dieses enthält nun set mouse=a, womit die Maus nun automatisch den visual mode des vim öffnet, was dann aber das simple Kopieren durch Markieren unterläuft.

Ok, dachte ich mir, lege ich eben für den user eine .vimrc an und schreibe das invertierende Kommando "set mouse-=a" dort rein (man beachte das kleine Minuszeichen!). Danach funktioniert das Kopieren mit der Maus zwar wieder, aber laut Doku wird dann die gesamte defaults.vim nicht mehr wirksam (also die empfohlenen Voreinstellungen der Distribution sozusagen). Es gibt zwar verschiedene Workarounds, wie man die defaults.vim und eine vimrc wieder zusammenbringen kann, aber die erscheinen mir alle zu umständlich, weshalb ich die defaults.vim nun direkt an dieser einen Stelle ändere. Auch mit der Erwartung, daß ein Paket-Update diese Änderung wahrscheinlich irgendwann wieder überschreiben wird.

Ich hänge hier unkommentiert nochmal die Dokus an, die ich innerhalb von Stretch zu dem Thema gefunden hatte:

Code: Alles auswählen

---------------------------------------------------------------------------------
/usr/share/doc/vim# zless NEWS.Debian.gz 

vim (2:8.0.0022-1) unstable; urgency=medium

  Vim now ships with a defaults.vim file which, when the user has no vimrc,
  enables some options that have historically been disabled by default.  This
  is described in more detail at ":help defaults.vim".

  Since defaults.vim is loaded when the user's vimrc would typically be
  loaded, it will override any settings in /etc/vim/vimrc(.local).  In order
  to disable the loading of defaults.vim, add

    let g:skip_defaults_vim = 1

  to /etc/vim/vimrc(.local).
-----------------------------------------------------------------------

:help defaults.vim

Defaults without a .vimrc file
                                                        *defaults.vim*
If Vim is started normally and no user vimrc file is found, the
$VIMRUTIME/defaults.vim script is loaded.  This will set 'compatible' off,
switch on syntax highlighting and a few more things.  See the script for
details.  NOTE: this is done since Vim 8.0, not in Vim 7.4. (it was added in
patch 7.4.2111 to be exact).

This should work well for new Vim users.  If you create your own .vimrc, it is
recommended to add this line somewhere near the top:
        unlet! skip_defaults_vim
        source $VIMRUNTIME/defaults.vim
Then Vim works like before you had a .vimrc. Copying $VIMRUNTIME/vimrc_example
is way to do this.  Alternatively, you can copy defaults.vim to your .vimrc
and modify it (but then you won't get updates when it changes).

If you don't like some of the defaults, you can still source defaults.vim and
revert individual settings.  See the defaults.vim file for hints on how to
revert each item.

                                                *skip_defaults_vim*
If you use a system-wide vimrc and don't want defaults.vim to change settings,
set the "skip_defaults_vim" variable.  If this was set and you want to load
defaults.vim from your .vimrc, first unlet skip_defaults_vim, as in the
example above.
----------------------------------------------------------------------------------------------

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von Liffi » 03.02.2017 19:03:55

Bei mir geht es trotz mouse on, wenn ich (im Terminal unter tmux) die shift Taste zusätzlich drücke.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von uname » 03.02.2017 19:07:51

Da manchmal das Kopieren von Text in Terminals nicht funktioniert nutze ich gerne Debianterminator bzw. Debianmate-terminal, was aber eigentlich für meinen Window-Manager Debianopenbox ein wenig überdimensioniert ist. Trotzdem tolle Gnome- und Mate-Anwendungen. Auch kann Debianterminator Split-Screen, was einfacher ist als z.B. in Debianscreen, Debiantmux oder direkt in Vim. Die genannten Probleme kenne ich nicht aber ich nutze auch noch kein Stretch.

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 03.02.2017 20:05:40

Liffi hat geschrieben:Bei mir geht es trotz mouse on, wenn ich (im Terminal unter tmux) die shift Taste zusätzlich drücke.
Kann gut sein, spätestens auf dem Notebook wäre mir das etwas zu viel Fingerakrobatik, da ich so schon die linke Maustaste am touchpad mit der linken Hand drücke und mit der rechten auch dem touchpad einen Textbereich markiere. - Aber ich werde Deine Möglichlkeit auch nochmal testen, ich meine gelesen zu haben, daß das in vim funktionieren sollte.

@uname
Yep, unter Jessie war das bisher auch noch kein Thema, erst unter Stretch. Das geschilderte Problem ist ein reines vim-Ding, irgendwelche Kommando-Zeilen in terminals und so funktionieren bisher, wie gewohnt. - Danke aber für die Tips zu Terminal-Konsolen. Auf dem neuen Notebook läuft zunächst ein kde-plasma-desktop, der bei Stretch angenehm schlank daherkommt, und dessen default-Terminal namens "Konsole" lässt eigentlich auch kaum Wünsche offen. Aber so Sachen, wie terminator oder tmux will ich mir schon länger mal genauer ansehen ...

Gruß

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von Meillo » 03.02.2017 21:09:03

whiizy hat geschrieben:Ich liebe auf einem Linux-Desktop die Möglichkeit, per Maus einen Text im vim-Editor zu markieren und mit der mittleren Maustaste wieder irgendwo fallen zu lassen. Mache ich unter Debian schon ewig so. - Geht plötzlich nach der frischen Installation von vim unter Stretch aber nicht mehr :-/
Diese Features kenne ich, die nennen sich ``Wir machen es jetzt benutzerfreundlicher''. </sarkasmus> :evil:
Use ed once in a while!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von rendegast » 03.02.2017 23:17:40

whiizy hat geschrieben: ... aber laut Doku wird dann die gesamte defaults.vim nicht mehr wirksam (also die empfohlenen Voreinstellungen der Distribution sozusagen). Es gibt zwar verschiedene Workarounds, wie man die defaults.vim und eine vimrc wieder zusammenbringen kann, aber die erscheinen mir alle zu umständlich, weshalb ich die defaults.vim nun direkt an dieser einen Stelle ändere.
Der "normale" Ablauf, ohne dem Benutzer gehörende Dateien
$ cat /tmp/_vim.strace | egrep "rc|debian" | egrep -o "/.*"
/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
/usr/share/vim/vimrc", {st_mode=S_IFREG|0644, st_size=2125, ...}) = 0
/usr/share/vim/vimrc", O_RDONLY|O_LARGEFILE) = 3
/usr/share/vim/vimrc", {st_mode=S_IFREG|0644, st_size=2125, ...}) = 0

/home/user/.vim/debian.vim", 0xbfa012cc) = -1 ENOENT (No such file or directory)

/usr/share/vim/vimfiles/debian.vim", 0xbfa012cc) = -1 ENOENT (No such file or directory)
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", O_RDONLY|O_LARGEFILE) = 4
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vimfiles/after/debian.vim", 0xbfa012cc) = -1 ENOENT (No such file or directory)

/home/user/.vim/after/debian.vim", 0xbfa012cc) = -1 ENOENT (No such file or directory)

/etc/vim/vimrc.local", {st_mode=S_IFREG|0644, st_size=1996, ...}) = 0
/etc/vim/vimrc.local", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 4
/etc/vim/vimrc.local", {st_mode=S_IFREG|0644, st_size=1996, ...}) = 0
/etc/vim/vimrc.local", O_RDONLY|O_LARGEFILE) = 4
/etc/vim/vimrc.local", {st_mode=S_IFREG|0644, st_size=1996, ...}) = 0

/home/user/.vimrc", 0xbfa0198c) = -1 ENOENT (No such file or directory)
/home/user/.vimrc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
/home/user/_vimrc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
/home/user/.vim/vimrc", 0xbfa0198c) = -1 ENOENT (No such file or directory)
/home/user/.vim/vimrc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
/home/user/.exrc", 0xbfa0198c) = -1 ENOENT (No such file or directory)
/home/user/.exrc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
Wenn ich die dem Benutzer zur Verfügung stehenden Dateien mal erzeuge,
ändert sich das natürlich:
$ touch .vimrc _vimrc .exrc .vim/vimrc .vim/debian.vim .vim/after/debian.vim

$ cat /tmp/_vim.strace | egrep "rc|debian" | egrep -o "/.*"
/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
/usr/share/vim/vimrc", {st_mode=S_IFREG|0644, st_size=2125, ...}) = 0
/usr/share/vim/vimrc", O_RDONLY|O_LARGEFILE) = 3
/usr/share/vim/vimrc", {st_mode=S_IFREG|0644, st_size=2125, ...}) = 0

/home/user/.vim/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/debian.vim", O_RDONLY|O_LARGEFILE) = 4
/home/user/.vim/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0

/usr/share/vim/vimfiles/debian.vim", 0xbffe9fac) = -1 ENOENT (No such file or directory)
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vim74/debian.vim", O_RDONLY|O_LARGEFILE) = 4
/usr/share/vim/vim74/debian.vim", {st_mode=S_IFREG|0644, st_size=1708, ...}) = 0
/usr/share/vim/vimfiles/after/debian.vim", 0xbffe9fac) = -1 ENOENT (No such file or directory)

/home/user/.vim/after/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/after/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/after/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/after/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vim/after/debian.vim", O_RDONLY|O_LARGEFILE) = 4
/home/user/.vim/after/debian.vim", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0

/etc/vim/vimrc.local", {st_mode=S_IFREG|0644, st_size=1996, ...}) = 0
/etc/vim/vimrc.local", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 4
/etc/vim/vimrc.local", {st_mode=S_IFREG|0644, st_size=1996, ...}) = 0
/etc/vim/vimrc.local", O_RDONLY|O_LARGEFILE) = 4
/etc/vim/vimrc.local", {st_mode=S_IFREG|0644, st_size=1996, ...}) = 0

/home/user/.vimrc", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
/home/user/.vimrc", O_RDONLY|O_LARGEFILE) = 3
/home/user/.vimrc", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
die $runtime/debian.vim wird immer eingelesen.

Ob eine gesetzte Option in
$HOME/.vim/after/debian.vim oder
$HOME/.vimrc oder
(systemweit) /etc/vim/vimrc.local
wirklich alle vorgegebenen Werte der Systemdateien ungültig macht?
Als Übungsaufgabe.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 04.02.2017 00:19:46

Es besteht da Verwechselungsgefahr. Ich schrieb über die Datei defaults.vim und Du jetzt über debian.vim. Beide koexistieren nach der Installation von vim in folgenden Pfaden:

/usr/share/vim/vim80/defaults.vim
/usr/share/vim/vim80/debian.vim

Die entscheidende mouse-Option steht in der defaults.vim. Sobald ich diese Option in einer extra dafür angelegten .vimrc überschreibe, wird
sie zwar wirksam, aber gleichzeitig verschwindet auch das farbige syntax-highlighting. Da "syntax on" in der defaults.vim gesetzt wird, würde es schon passen, daß die gesamte defaults.vim aufgrund der angelegten .vimrc nicht mehr gelesen wird. So habe ich die Dokus oben auch verstanden, oder nicht?

Davon mal ab sollte die Konfig eines Editors nicht so verschachtelt und obskur verstreut sein. Aber vielleicht hat das etwas mit Abwärtskompatibilität zu tun, wer weiß ...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von rendegast » 04.02.2017 01:09:14

Oh, richtig, stretch.

Dort die versuchte Reihenfolge der Benutzerdateien
~/.vimrc
~/_vimrc
~/.vim/vimrc
~/.exrc
......../defaults.vim
Die Kette wird abgebrochen, sobald eine der Dateien existiert.

Du kannst
~/.vimrc
beginnen lassen mit einem source wie in der systemweiten vimrc

Code: Alles auswählen

"if filereadable("....../defaults.vim")
"      source ....../defaults.vim
"endif
runtime! defaults.vim

<eigene Optionen>
Dann wird eine Kette nach defaults.vim abgearbeitet, worunter auch die vim80/defaults.vim ist.


EDIT
Ein expliziter Aufruf in der /etc/vim/vimrc.local sollte für die allermeisten Fälle ausreichen.
Vgl. veränderte Abläufe per 'strace -e trace=file -f vim'.
Zuletzt geändert von rendegast am 04.02.2017 13:28:53, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 04.02.2017 09:05:07

@rendegast
Danke für Deine Anregungen,
aber ist das nicht schon doppelt-gemoppelt? Sollte nicht schon "runtime! defaults.vim" allein in der .vimrc ausreichen?

Ein anderer workaround als Deiner war ja oben schon aus der vim help zitiert, hier nochmal verkürzt:

Code: Alles auswählen

If you create your own .vimrc, it is
recommended to add this line somewhere near the top:
        unlet! skip_defaults_vim
        source $VIMRUNTIME/defaults.vim
Then Vim works like before you had a .vimrc
Als Nachteil empfinde ich, daß man so für jeden User eine .vimrc mit obigen Umleitungen und den eigentlichen Wunschoptionen anlegen muss. Also auch für root (der ja meist bei cut&paste aktiv ist) und meine zwei desktop user.

Am angenehmsten wäre mir, wenn die Option "set mouse-=a" wie lange üblich global bliebe, aber gleichzeitig immer die aktuellen vim defaults aus dem Distributionspaket gelesen würden.

Deshalb hatte ich die mouse-option in der defaults.vim gesetzt, was aber keine schöne Lösung ist, da die Datei bei einem Update von vim möglicherweise wieder überschrieben wird.

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 04.02.2017 11:11:12

doppelt-gemoppelt?
Habe es selbst noch ausprobiert, in der .vimrc eines Users reicht hier unter Stretch:

Code: Alles auswählen

runtime! defaults.vim
set mouse-=a

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von Livingston » 04.02.2017 11:24:54

whiizy hat geschrieben:Als Nachteil empfinde ich, daß man so für jeden User eine .vimrc mit obigen Umleitungen und den eigentlichen Wunschoptionen anlegen muss. Also auch für root (der ja meist bei cut&paste aktiv ist) und meine zwei desktop user.
Das lässt sich ja noch unter Kontrolle bringen, indem man den Krempel in /etc/skel packt und einmalig in /root reinkopiert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von rendegast » 04.02.2017 13:27:14

Ein expliziter Aufruf in der /etc/vim/vimrc.local sollte für die allermeisten Fälle ausreichen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22359
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von KBDCALLS » 04.02.2017 14:11:48

Möchte mal gerne wissen was man da verschlimmbessert hat. Aufgefallen ist mir das an der history. Habe in /etc/vim/vimrc history=500 stehen. In der /usr/share/vim/vim80/default.vim steht history=200

Preisfrage . Was ergab die Abfrage ? Eine 200 . Ob das im Sinne des Erfinders ist? Vim 8.0 läuft bei mir als Backport . Patchlevel 134.

PS. Ḿittlerweile ist man schon bei 300.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 04.02.2017 15:29:00

rendegast hat geschrieben:Ein expliziter Aufruf in der /etc/vim/vimrc.local sollte für die allermeisten Fälle ausreichen.
... also hier reicht es nicht, denn die defaults.vim wird erst anschließend gelesen und überschreibt somit eine eigene mouse-Option in vimrc.local. Habe es verifiziert und es steht auch nochmal so beschrieben in der /etc/vim/vimrc selbst:

Code: Alles auswählen

" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22359
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von KBDCALLS » 04.02.2017 15:33:41

whiizy hat geschrieben:

Code: Alles auswählen

" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
Es ist aber trotzdem schlechter Stil ungefragt die Einstellungen zu überschreiben, Egal wo man sie vorgenommen hat. Kommt mir fast so vor wie Gnome. Da hat man sich auch nicht um die User geschert.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 04.02.2017 15:44:04

@KBDCALLS
history meint hier doch nur den Befehlszeilenspeicher, unter Stretch über die defaults.vim so voreingestellt:

Code: Alles auswählen

set history=200         " keep 200 lines of command line history
Der Befehl vim --version liefert unter Stretch diese Patche:

Code: Alles auswählen

# vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jan 17 2017 01:26:10)
Included patches: 1-197
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
[...]
Die vim help erwähnte wie im ersten Beitrag gezeigt einen Patch, seit dem defaults.vim wohl eingeführt wurde, wenn ich es richtig verstehe:

Code: Alles auswählen

NOTE: this is done since Vim 8.0, not in Vim 7.4. (it was added in
patch 7.4.2111 to be exact)
Kannst Du damit mehr anfangen?

PS: Überkreuzung, hatte Deinen Beitrag über gnome noch nicht gesehen gehabt. Naja, ist ja eine Neuinstallation, und da sind irgendwelche vimrc vom User noch nicht bearbeitet worden, da kann man Übersteuerungen eigentlich noch nicht übelnehmen. Wer weiß, wie die Installationsroutine bei modifizierter vimrc reagiert hätte.

PPS: Hier gefunden: version8.txt

Patch 7.4.2111
Problem: Defaults are very conservative.
Solution: Move settings from vimrc_example.vim to defaults.vim. Load
defaults.vim if no .vimrc was found.
Files: src/main.c, src/version.c, src/os_amiga.h, src/os_dos.h,
src/os_mac.h, src/os_unix.h, src/feature.h, src/Makefile,
runtime/vimrc_example.vim, runtime/defaults.vim,
runtime/evim.vim, Filelist, runtime/doc/starting.txt

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von rendegast » 04.02.2017 23:53:09

wheezy hat geschrieben:
(vorhandene ~/.vimrc, sodaß die defaults.vim nicht benutzt wird
(ohne ~/vimrc standardmäßig als letzte konf-Datei))
Ein expliziter Aufruf in der /etc/vim/vimrc.local sollte für die allermeisten Fälle ausreichen.
... also hier reicht es nicht,
denn die defaults.vim wird erst anschließend gelesen und überschreibt somit eine eigene mouse-Option in vimrc.local. Habe es verifiziert und es steht auch nochmal so beschrieben in der /etc/vim/vimrc selbst:
" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
Ich habe doch aufgeführt

Code: Alles auswählen

...
runtime! defaults.vim
<eigene option>
(nicht

Code: Alles auswählen

...
<eigene option>
runtime! defaults.vim
) Dafür muß natürlich die Bedingung erfüllt sein, daß die defaults.vim NICHT als allerletzte Konf eingelesen wird,
also zumindest eine der Benutzer-Konf existiert.
Es kann genausogut <eigene option> in Benutzer-Konf untergebracht werden.

Kleine Einschränkung: defaults.vim in vimrc.local läßt nosyntax.vim des System NACH der defaults.vim zum Tragen kommen, was eventuell so nicht vorgesehen ist.
Damit defaults.vim wirklich nur von Benutzeroptionen überschrieben wird, sollte

Code: Alles auswählen

runtime! defaults.vim

<eigene optionen>
in der ~/.vimrc eingesetzt werden.
Inwieweit aber nosyntax.vim die defaults.vim (und dessen Rattenschwanz) beträfe?



Ich sehe diese 4 Möglichkeiten
  • vimrc.local (ohne defaults.vim)
    <nosyntax.vim>
    <KEINE Benutzer-Datei>
    <defaults.vim>
  • vimrc.local (ohne defaults.vim)
    <nosyntax.vim>
    <Benutzer-Datei> (mit defaults.vim + Optionen)
    defaults.vim
    Benutzer-Optionen
  • vimrc.local
    defaults.vim
    vimrc.local-Optionen
    <nosyntax.vim>
    <Benutzer-Datei> (ohne defaults.vim)
    Benutzer-Optionen
  • vimrc.local
    defaults.vim
    vimrc.local-Optionen
    <nosyntax.vim>
    <KEINE Benutzer-Datei>
    <defaults.vim>
Der Admin müßte sich zumindest die Möglichkeit offenhalten,
eine der Benutzer-Konf anzulegen,
damit (systemweite) vimrc.local-Optionen, die in Konflikt mit defaults.conf (+Rattenschwanz) liegen,
nicht doch von dieser wegen des impliziten Ladens überschrieben werden.
Also als freundlich gemeinte Vorgabe.
Es liegt dann im Ermessen des Benutzers,
dies durch Beibehalten seiner Konf-Datei(en) so zu belassen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 05.02.2017 10:24:17

@rendegast
Das wird jetzt doch sehr abstrakt und da ist es ganz nützlich, sich erstmal wieder dem konkreten Beispiel zuzuwenden. Ich fasse daher einmal kurz zusammen, was wir bisher wirklich wissen. Eigentlich ist die konkrete Problemstellung des Threads ja auch bereits gelöst.

Ziel war:
Wie kann man die neuen defaults von vim 8.0 nutzen und gleichzeitig eine abweichende eigene Option beibehalten (hier "set mouse-=a")?

Lösung 1:
Wenn es jeder einzelne User selbst regeln soll, kann er sich eine .vimrc im home anlegen. Zwei Lösungen für diesen Fall hatten wir gefunden:

Code: Alles auswählen

.vimrc
unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim
set mouse-=a

und

.vimrc
runtime! defaults.vim
set mouse-=a
Lösung 2:
Wenn man die konkrete mouse-Option hingegen *global* setzen möchte (also ohne, daß jeder User sich eine .vimrc anlegen muss), dann funktionierte die Anpassung in:

Code: Alles auswählen

/usr/share/vim/vim80/defaults.vim
set mouse-=a
# statt set mouse=a
Diese Lösung für den globalen Fall ist jedoch verbesserungswürdig, da sie nicht gegen Distributions-Updates geschützt ist.

Wer eine weitere *konkrete* globale Lösung hat, kann sie hier im Thread ja nochmal aufschreiben.

Besonders schön wäre am Ende natürlich eine universelle Lösung, die zunächst eine globale Voreinstellung einer Einzeloption durch den Admin zulässt, aber gleichzeitig deren Überschreibung durch einen User über eine .vimrc zulässt.
(also so, wie es seit Jahren bestens funktioniert hat :wink: )

whiizy
Beiträge: 674
Registriert: 23.07.2011 22:09:37

Re: vim 8.0: Kopieren von Texten mit der Maus, grrr

Beitrag von whiizy » 06.02.2017 20:13:50

Besonders schön wäre am Ende natürlich eine universelle Lösung, die zunächst eine globale Voreinstellung einer Einzeloption durch den Admin zulässt, aber gleichzeitig deren Überschreibung durch einen User über eine .vimrc zulässt.
(also so, wie es seit Jahren bestens funktioniert hat :wink: )
... ich habe mich jetzt nochmal etwas umgesehen [1] und dafür eine Lösung gefunden, die quasi global ist, aber auch lokal von einer .vimrc übersteuert werden kann:

Code: Alles auswählen

Anlegen einer /etc/vim/vimrc.local mit:

runtime! defaults.vim
let g:skip_defaults_vim = 1
set mouse-=a
In einer selbstangelegten .vimrc könnte ein User die obige mouse-Option des Admins wieder zurücksetzen, z.B.:

Code: Alles auswählen

.vimrc
set mouse+=a
Gruß

[1] https://bugs.debian.org/cgi-bin/bugrepo ... bug=837761

Antworten