Discussion:
[vim] chown beim start
(zu alt für eine Antwort)
Marc Haber
2023-12-26 17:11:57 UTC
Permalink
Hi,

ich habe in meiner .vimrc:
|let s:undodir = "/tmp/vim_undo_" . $USER
|if !isdirectory(s:undodir)
| call mkdir(s:undodir, "", 0700)
|endif
|let &undodir=s:undodir
|set undofile

d.h. das Undo-Directory liegt in /tmp und soll dort angelegt werden,
weil /tmp auf meinen Systemen ein tmpfs ist.

Das funktoniert eigentich problemlos, außer wenn der erste vim-Aufruf
via sudo als root erfolgt. Dann wird /tmp/vim_undo_mh als root:root
0700 angelegt und das mag der nächste dann ohne sudo aufgerufene vim
so gar nicht.

Kann ich innerhalb des isdirectory-Zweiges das frisch angelegte
Directory an $USER übereignen? Habe ich im vimrc die Möglichkeit, ein
Shellkommando aufzurufen? "call chown" scheint es nicht zu geben,
"call install -d -o $USER /tmp/vim_undo_$USER" auch nicht.

Habt Ihr da kreative Ideen?

Grüße
Marc
--
-------------------------------------- !! No courtesy copies, please !! -----
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
Frank B
2023-12-26 18:25:06 UTC
Permalink
Post by Marc Haber
Hi,
|let s:undodir = "/tmp/vim_undo_" . $USER
|if !isdirectory(s:undodir)
| call mkdir(s:undodir, "", 0700)
|endif
|let &undodir=s:undodir
|set undofile
d.h. das Undo-Directory liegt in /tmp und soll dort angelegt werden,
weil /tmp auf meinen Systemen ein tmpfs ist.
...
Post by Marc Haber
Habt Ihr da kreative Ideen?
Ich habe kein undodir/file sondern nehme das
savevers plugin, das bei jedem :w eine Sicherung anlegt.

https://www.vim.org/scripts/script.php?script_id=89
MfG
Frank
Joerg Walther
2023-12-27 10:48:49 UTC
Permalink
Post by Frank B
Ich habe kein undodir/file sondern nehme das
savevers plugin, das bei jedem :w eine Sicherung anlegt.
https://www.vim.org/scripts/script.php?script_id=89
Ui, gut abgehanden, letztes Update 2001. Und das tut noch mit aktueller
Software?

-jw-
--
And now for something completely different...
Frank B
2023-12-27 12:26:47 UTC
Permalink
Post by Joerg Walther
Post by Frank B
Ich habe kein undodir/file sondern nehme das
savevers plugin, das bei jedem :w eine Sicherung anlegt.
https://www.vim.org/scripts/script.php?script_id=89
Ui, gut abgehanden, letztes Update 2001. Und das tut noch mit aktueller
Software?
-jw-
Ja, verwende ich.
Stefan Möding
2023-12-27 07:39:04 UTC
Permalink
Post by Marc Haber
Habt Ihr da kreative Ideen?
Du könntest das Verzeichnis beim Login anlegen, falls es da noch nicht
existiert. Entweder modern mit einer Systemd User Unit oder traditionell
in einer der Shell Startup Dateien.
--
Stefan
Marc Haber
2024-07-23 08:14:20 UTC
Permalink
Post by Stefan Möding
Post by Marc Haber
Habt Ihr da kreative Ideen?
Du könntest das Verzeichnis beim Login anlegen, falls es da noch nicht
existiert. Entweder modern mit einer Systemd User Unit oder traditionell
in einer der Shell Startup Dateien.
Ja, das war dann auch die Lösung. Ich hab das im Mai endlich mal
gemacht:

|if ! [ -e "/tmp/undo_${USER}" ]; then
| mkdir --mode 700 "/tmp/undo_${USER}"
|fi

in der .bash_initshared (die bei mir aus der .bash_profile und der
.bashrc aufgerufen wird) und die Meldung ist dauerhaft weg.

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Bernd Mayer
2023-12-27 09:16:15 UTC
Permalink
Post by Marc Haber
Hi,
Habe ich im vimrc die Möglichkeit, ein
Shellkommando aufzurufen? "call chown" scheint es nicht zu geben,
"call install -d -o $USER /tmp/vim_undo_$USER" auch nicht.
Hallo,

laut manpage:

https://linuxcommand.org/lc3_man_pages/vim1.html

-u {vimrc} Use the commands in the file {vimrc} for initializations.


Bernd Mayer
Marc Haber
2023-12-27 14:09:56 UTC
Permalink
Post by Bernd Mayer
Post by Marc Haber
Hi,
Habe ich im vimrc die Möglichkeit, ein
Shellkommando aufzurufen? "call chown" scheint es nicht zu geben,
"call install -d -o $USER /tmp/vim_undo_$USER" auch nicht.
Hallo,
https://linuxcommand.org/lc3_man_pages/vim1.html
-u {vimrc} Use the commands in the file {vimrc} for initializations.
Ich verstehe nicht was Du meinst. Nach meinem Verständnis liest vim -u
ein _anderes_ file als vimrc, andere Kommandos kann man da aber nicht
reinschreiben.

Grüße
Marc
--
-------------------------------------- !! No courtesy copies, please !! -----
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
Bernd Mayer
2023-12-27 15:00:00 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
Post by Marc Haber
Hi,
Habe ich im vimrc die Möglichkeit, ein
Shellkommando aufzurufen? "call chown" scheint es nicht zu geben,
"call install -d -o $USER /tmp/vim_undo_$USER" auch nicht.
Hallo,
https://linuxcommand.org/lc3_man_pages/vim1.html
-u {vimrc} Use the commands in the file {vimrc} for initializations.
Ich verstehe nicht was Du meinst. Nach meinem Verständnis liest vim -u
ein _anderes_ file als vimrc, andere Kommandos kann man da aber nicht
reinschreiben.
Hallo,

vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.

Mit
:!

kann man von VIM aus die folgenden Shell-Befehle ausführen.
(Mit Makros geht das wohl auch)

Hier ein Beispiel dazu:
https://www.howtoforge.de/anleitung/wie-man-von-vim-aus-auf-die-shell-zugreift-oder-externe-befehle-ausfuehrt/

Laut WWW geht das offenbar auch von der vimrc aus.

Hier ein auf die Schnelle gefundenes Beispiel:
https://stackoverflow.com/questions/2302846/running-a-shell-script-in-vimrc-and-processing-the-output

Ich habe länger nix komplexes mit VIM gemacht, daher ungetestet.

Lange her da hatte ich mit VIM öfters CDs gebrannt:
Ein Standardskript mit VIM geöffnet, über die shell mittels ls den Namen
des aktuellen ISO reingeladen, das Skript editiert und von VIM aus das
Brennprogramm gestartet.


Bernd Mayer
Bernd Mayer
2023-12-27 15:10:49 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
Post by Marc Haber
Hi,
Habe ich im vimrc die Möglichkeit, ein
Shellkommando aufzurufen? "call chown" scheint es nicht zu geben,
"call install -d -o $USER /tmp/vim_undo_$USER" auch nicht.
Hallo,
https://linuxcommand.org/lc3_man_pages/vim1.html
-u {vimrc} Use the commands in the file {vimrc} for initializations.
Ich verstehe nicht was Du meinst. Nach meinem Verständnis liest vim -u
ein _anderes_ file als vimrc, andere Kommandos kann man da aber nicht
reinschreiben.
Hallo,

vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.

Mit
:!

kann man von VIM aus die folgenden Shell-Befehle ausführen.
(Mit Makros geht das wohl auch)

Hier ein Beispiel dazu:
https://www.howtoforge.de/anleitung/wie-man-von-vim-aus-auf-die-shell-zugreift-oder-externe-befehle-ausfuehrt/

Laut WWW geht das offenbar auch von der vimrc aus.

Ich habe länger nix komplexes mit VIM gemacht, daher ungetestet.

Lange her da hatte ich mit VIM öfters CDs gebrannt:
Ein Standardskript mit VIM geöffnet, über die shell mittels ls den Namen
des aktuellen ISO reingeladen, das Skript editiert und von VIM aus das
Brennprogramm gestartet.


Bernd Mayer
Marc Haber
2023-12-27 20:11:53 UTC
Permalink
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
--
-------------------------------------- !! No courtesy copies, please !! -----
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
Bernd Mayer
2023-12-27 23:23:53 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
Hallo,

ich habe das gerade getestet:

eine leere vimrc angelegt.

Und darin als Beispiel
:!ls

eingetragen.

Dann zeiegt er mir beim Start von VIM die Ausgabe von ls an.

Das sollte auch mit chown irgendwas oder anderen shell-Befehlen
funktionieren.

Sorry falls es da Mißverständnisse gibt.


Bernd Mayer
Bernd Mayer
2023-12-27 23:34:59 UTC
Permalink
Post by Bernd Mayer
Post by Marc Haber
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
Hallo,
eine leere vimrc angelegt.
Und darin als Beispiel
:!ls
eingetragen.
Dann zeiegt er mir beim Start von VIM die Ausgabe von ls an.
Das sollte auch mit chown irgendwas oder anderen shell-Befehlen
funktionieren.
Nachtrag:

ich habe das gerade auch mit chown erfolgreich getestet.


Bernd Mayer
Bernd Mayer
2023-12-28 05:01:48 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
Hallo,

ich habe das gerade getestet:

eine leere vimrc angelegt.

Und darin als Beispiel
:!ls

eingetragen.

Dann sehe ich beim Start von VIM die Ausgabe von ls.

Mit chown habe das gerade auch erfolgreich getestet.

Man kann mit dieser Methode auch eigene bash-skripte von der vimrc aus
starten.

Sorry falls es da Mißverständnisse gibt.

Du hattest ja auch gefragt: "Habt Ihr da kreative Ideen?"


Bernd Mayer
Bernd Mayer
2023-12-29 21:52:09 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
Hallo,

auf Deine Frage
"Habe ich im vimrc die Möglichkeit, ein Shellkommando aufzurufen?"

Ja - das geht.

Shellkommandos muss man im VIM mit :! einleiten.
Das funktioniert auch in der vimrc oder vimrc.local

Hier funktioniert in der vimrc (am Ende) der passende chown Aufruf mit
dem Anfang (Bitte passend abändern für Dein System):

:!chown -R /tmp/vim_undo_mh mark:users

Falls nicht, dann kann man das chown bei Bedarf auch vor dem Beenden von
VIM ausführen im VIM.

Hier funktioniert das unter OpenSUSE-15.3 und unter Debian-12.4

Funktioniert das bei Dir?


Bernd Mayer
Bernd Mayer
2023-12-29 21:55:02 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
Hallo,

auf Deine Frage
"Habe ich im vimrc die Möglichkeit, ein Shellkommando aufzurufen?"

Ja - das geht.

Shellkommandos muss man im VIM mit :! einleiten.
Das funktioniert auch in der vimrc oder vimrc.local

Hier funktioniert in der vimrc (am Ende) der passende chown Aufruf mit
dem Anfang (Bitte passend abändern für Dein System):

:!chown -R /tmp/vim_undo_mh mark:users

Falls nicht, dann kann man das chown bei Bedarf auch vor dem Beenden von
VIM ausführen im VIM.

Hier funktioniert das unter OpenSUSE-15.5 und unter Debian-12.4

Funktioniert das bei Dir?


Bernd Mayer
Bernd Mayer
2023-12-29 22:06:52 UTC
Permalink
Post by Marc Haber
Post by Bernd Mayer
vom VIM aus kann man ja Shellbefehle ausführen, siehe die manpage oder
refcard zu VIM.
Ach so, Du möchtest so tun als würdest Du helfen wollen ohne wirklich
zu helfen. Das hatte ich übersehen. Danke für das Gespräch und für die
verschwendete Zeit.
Hallo,

auf Deine Frage
"Habe ich im vimrc die Möglichkeit, ein Shellkommando aufzurufen?"

Ja - das geht.

Shellkommandos muss man im VIM mit :! einleiten.
Das funktioniert auch in der vimrc oder vimrc.local

Hier funktioniert in der vimrc (am Ende) der passende chown Aufruf mit
dem Anfang (Bitte passend abändern für Dein System):

:!chown -R mark:users /tmp/vim_undo_mh

Falls nicht, dann kann man das chown bei Bedarf auch vor dem Beenden von
VIM ausführen im VIM.

Hier funktioniert das unter OpenSUSE-15.5 und unter Debian-12.4

Funktioniert das bei Dir?


Bernd Mayer
Enrik Berkhan
2023-12-27 11:01:04 UTC
Permalink
Post by Marc Haber
|let s:undodir = "/tmp/vim_undo_" . $USER
|if !isdirectory(s:undodir)
| call mkdir(s:undodir, "", 0700)
|endif
|let &undodir=s:undodir
|set undofile
d.h. das Undo-Directory liegt in /tmp und soll dort angelegt werden,
weil /tmp auf meinen Systemen ein tmpfs ist.
Das funktoniert eigentich problemlos, außer wenn der erste vim-Aufruf
via sudo als root erfolgt. Dann wird /tmp/vim_undo_mh als root:root
0700 angelegt und das mag der nächste dann ohne sudo aufgerufene vim
so gar nicht.
Kann ich innerhalb des isdirectory-Zweiges das frisch angelegte
Directory an $USER übereignen? Habe ich im vimrc die Möglichkeit, ein
Shellkommando aufzurufen? "call chown" scheint es nicht zu geben,
"call install -d -o $USER /tmp/vim_undo_$USER" auch nicht.
Habt Ihr da kreative Ideen?
Mit "let whatever = system('<shell command>')" sollte das gehen, oder?

Oder du fummelst es so hin, dass root auch mit sudo ein eigenes
Verzeichnis bekommt. Würde bei mir ohnehin passieren, weil sudo offenbar
anders konfiguriert ist (USER=root).

Gruß,
Enrik
Loading...