Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.editoren > #384 > unrolled thread
| Started by | Christian Garbs <mitch@cgarbs.de> |
|---|---|
| First post | 2022-03-11 19:12 +0000 |
| Last post | 2022-03-11 21:50 +0000 |
| Articles | 5 — 4 participants |
Back to article view | Back to de.comp.editoren
[vi] externen Editor aufrufen Christian Garbs <mitch@cgarbs.de> - 2022-03-11 19:12 +0000
Re: [vi] externen Editor aufrufen Frank Beythien <nospam_2022@efbe.prima.de> - 2022-03-11 20:49 +0100
Re: [vi] externen Editor aufrufen Christian Garbs <mitch@cgarbs.de> - 2022-03-11 20:16 +0000
Re: [vi] externen Editor aufrufen Friedhelm Waitzmann <usenetf2022.fwnsp@spamgourmet.com> - 2022-03-25 23:00 +0000
Re: [vi] externen Editor aufrufen Christian Weisgerber <naddy@mips.inka.de> - 2022-03-11 21:50 +0000
| From | Christian Garbs <mitch@cgarbs.de> |
|---|---|
| Date | 2022-03-11 19:12 +0000 |
| Subject | [vi] externen Editor aufrufen |
| Message-ID | <t0g6uf$9td7$1@yggdrasil.dn.cgarbs.de> |
Mahlzeit! Ich bin normalerweise Emacs-Nutzer, mache aber aus verschiedenen Gründen immer mehr "kleinere Sachen" im vi. Das ist vom Niveau her noch so "suchen, Zeile löschen, Wörter ändern". Ich überlege jetzt, EDITOR=vi zu setzen, um mal mehr zu üben. Wenn ich dann aber beim Bearbeiten einer Datei bemerke, dass die Änderungen doch umfangreicher werden und ich jetzt gerne den Emacs hätte, kann ich dann on-the-fly Emacs aus dem vi aufrufen? Also konkret: Ich bearbeite ein Datei im vi und möchte per Kommando/Makro/Tastendruck die Datei, die ich gerade offen habe, im Emacs weiterbearbeiten. Nach dem Beenden von Emacs möchte ich dann wieder im vi sein und dort die Änderungen, die ich im Emacs gemacht habe, vorfinden. Dass die aktuelle Datei zwischendurch 2x gespeichert werden muss, ist mir bewusst und das soll auch gerne so sein. Kann man eine vi-Session an Emacs eskalieren? ;-) Ich vermute ganz stark, dass das möglich ist, allein fehlt mir das "wie?". Googeln nach "vi edit file in external editor" und ähnlichem war bisher nicht erfolgreich. Danke und Gruß Christian -- ....Christian.Garbs....................................https://www.cgarbs.de Biochemists wear designer genes
[toc] | [next] | [standalone]
| From | Frank Beythien <nospam_2022@efbe.prima.de> |
|---|---|
| Date | 2022-03-11 20:49 +0100 |
| Message-ID | <j91ne9Fpsj5U1@mid.individual.net> |
| In reply to | #384 |
Am 11.03.22 um 20:12 schrieb Christian Garbs: > Mahlzeit! > > Ich bin normalerweise Emacs-Nutzer, mache aber aus verschiedenen > Gründen immer mehr "kleinere Sachen" im vi. Das ist vom Niveau her > noch so "suchen, Zeile löschen, Wörter ändern". > > Ich überlege jetzt, EDITOR=vi zu setzen, um mal mehr zu üben. > > Wenn ich dann aber beim Bearbeiten einer Datei bemerke, dass die > Änderungen doch umfangreicher werden und ich jetzt gerne den Emacs > hätte, kann ich dann on-the-fly Emacs aus dem vi aufrufen? > > Also konkret: > > Ich bearbeite ein Datei im vi und möchte per Kommando/Makro/Tastendruck > die Datei, die ich gerade offen habe, im Emacs weiterbearbeiten. Nach > dem Beenden von Emacs möchte ich dann wieder im vi sein und dort die > Änderungen, die ich im Emacs gemacht habe, vorfinden. > > Dass die aktuelle Datei zwischendurch 2x gespeichert werden muss, ist > mir bewusst und das soll auch gerne so sein. > > Kann man eine vi-Session an Emacs eskalieren? ;-) > > Ich vermute ganz stark, dass das möglich ist, allein fehlt mir das "wie?". > Googeln nach "vi edit file in external editor" und ähnlichem war > bisher nicht erfolgreich. > > Danke und Gruß > Christian ich nehme mal gedit, emacs verwende ich nicht. vim ab.sh :w | !gedit % also in Vim Datei sichern und externen Editor aufrufen. Nach ändern und speichern fragt vim was mit der Datei passieren soll: W11: Achtung: Datei "ab.sh" wurde verändert, seit mit dem Editieren angefangen wurde Siehe ":help W11" für mehr Information. [O]K, (L)oad File, Load File (a)nd Options: Betätigen Sie die EINGABETASTE oder geben Sie einen Befehl ein MfG Frank
[toc] | [prev] | [next] | [standalone]
| From | Christian Garbs <mitch@cgarbs.de> |
|---|---|
| Date | 2022-03-11 20:16 +0000 |
| Message-ID | <t0gani$ar37$1@yggdrasil.dn.cgarbs.de> |
| In reply to | #385 |
Mahlzeit! Frank Beythien <nospam_2022@efbe.prima.de> wrote: > Am 11.03.22 um 20:12 schrieb Christian Garbs: >> Ich bearbeite ein Datei im vi und möchte per Kommando/Makro/Tastendruck >> die Datei, die ich gerade offen habe, im Emacs weiterbearbeiten. Nach >> dem Beenden von Emacs möchte ich dann wieder im vi sein und dort die >> Änderungen, die ich im Emacs gemacht habe, vorfinden. >> >> Dass die aktuelle Datei zwischendurch 2x gespeichert werden muss, ist >> mir bewusst und das soll auch gerne so sein. >> >> Kann man eine vi-Session an Emacs eskalieren? ;-) > ich nehme mal gedit, emacs verwende ich nicht. > > vim ab.sh > :w | !gedit % > also in Vim Datei sichern und externen Editor aufrufen. > Nach ändern und speichern fragt vim was mit der Datei passieren soll: Zu meinem eigenen Erschrecken muss ich sagen "das ist ja vollkommen logisch, das liest sich wie ein Buch": - ! kenne ich von meinen Vertippern bei :q! - | ist ne Pipe, ganz klar - % kann dann nur noch der aktuelle Dateiname sein Das kann ich mir dann hoffentlich sogar merken :) Großartig, danke! Christian -- ....Christian.Garbs....................................https://www.cgarbs.de Auch ein blinder Trinker findet mal 'n Korn.
[toc] | [prev] | [next] | [standalone]
| From | Friedhelm Waitzmann <usenetf2022.fwnsp@spamgourmet.com> |
|---|---|
| Date | 2022-03-25 23:00 +0000 |
| Message-ID | <t1lhie$19d4$1@gioia.aioe.org> |
| In reply to | #386 |
[Innerhalb von vim ein Programm (gedit im Beispiel) starten und ihm als Parameter die aktuell in vim editierte Datei übergeben] Christian Garbs: >Mahlzeit! >Frank Beythien <nospam_2022@efbe.prima.de> wrote: >> vim ab.sh >> :w | !gedit % >> also in Vim Datei sichern und externen Editor aufrufen. >> Nach ändern und speichern fragt vim was mit der Datei passieren soll: >Zu meinem eigenen Erschrecken muss ich sagen "das ist ja vollkommen >logisch, das liest sich wie ein Buch": > - ! kenne ich von meinen Vertippern bei :q! > - | ist ne Pipe, ganz klar Was soll hier ein Pipe? Das »|« ist nur dazu da, den zweiten Ex‐Modus‐Befehl »!« vom ersten (»w«) abzutrennen. Du könntest also statt dessen in zwei Zeilen eingeben: :w :! gedit % Dagegen würde :w ! gedit % – also ohne das trennende »|« – bedeuten, den aktuellen Pufferinhalt in eine temporäre Datei zu schreiben und dem externen Programm gedit beim Start als Standardeingabe einen geöffneten Kanal auf diese temporäre Datei mitzugeben. Probiere mal :w ! dir -l /dev/fd/. und :w ! less In einem Linux ist /dev/fd ein Symbolic Link, das auf /proc/self/fd zeigt. Dieses Verzeichnis liegt im Pseudodateisystem /proc und enthält zu jedem offenen Filedescriptor des Prozesses, der dieses Verzeichnis liest, ein symbolic Link, das auf die Datei verweist, auf die das jeweilige Filedescriptor Zugriff bietet. > - % kann dann nur noch der aktuelle Dateiname sein Ja, das soll es, aber es funktioniert nicht wirklich. Versuche mal, eine Datei, deren Namen eine Leerstelle enthält, zu verwenden: Innerhalb von vim: :edit mit\ Leerstelle Innerhalb von vim die Datei abspeichern: :w Aufruf des Programms »dir« zeigt, dass die Datei vorhanden ist: :! dir -Q Aber, den Dateinamen an »dir« zu übergeben, schlägt leider fehl: :! dir -Q -- % Und zwar deshalb, weil der Dateiname an der Leerstelle zerbricht. Um das zu reparieren, müsste vim wissen, wie er die Kommandozeile für das mit »!« gestartete Shell zusammenstellen muss, damit Zeichenketten (hier: der Dateiname) nicht an Leerstellen und anderen, vom Shell speziell interpretierten Zeichen zerbrechen. Das allerdings ist nicht für alle Shells gleich. Neben der Möglichkeit, zu konfigurieren, welches Shell gestartet werden soll (anzeigen mit »:set shell?«) bräuchte vim eine Möglichkeit, eine Funktion quote_a_string_for_the_shell zu konfigurieren, die dann z.B. für das POSIX‐Shell und die Zeichenkette »mit Leerstelle« die Zeichenkette »'mit Leerstelle'« liefert. Was bei einer Datei mit dem ulkigen Namen »;rm -r .« passieren würde (ja, das ist ein möglicher Dateiname!), will ich gar nicht ausprobieren. Friedhelm
[toc] | [prev] | [next] | [standalone]
| From | Christian Weisgerber <naddy@mips.inka.de> |
|---|---|
| Date | 2022-03-11 21:50 +0000 |
| Message-ID | <slrnt2nh20.1ngf.naddy@lorvorc.mips.inka.de> |
| In reply to | #384 |
On 2022-03-11, Christian Garbs <mitch@cgarbs.de> wrote: > Ich bearbeite ein Datei im vi und möchte per Kommando/Makro/Tastendruck > die Datei, die ich gerade offen habe, im Emacs weiterbearbeiten. Nach > dem Beenden von Emacs möchte ich dann wieder im vi sein und dort die > Änderungen, die ich im Emacs gemacht habe, vorfinden. Grundsätzlich kann man in vi(1) Textabschnitte mit '!' durch einen externen Filter drehen. Da Emacs wahrscheinlich aber nicht die zu editierende Datei von stdin lesen und nach stdout schreiben mag, passt das nicht. Man kann mit ':' in den ex(1)-Modus gehen und dort einfach mit !<cmd> einen beliebigen Befehl über eine Shell absetzen, z.B. auch "emacs datei". Nach Beenden kann man dann mit 'e' die geänderte Datei wieder einlesen und weiterbearbeiten. Nachteil ist, dann man den Dateinamen explizit angeben muss. -- Christian "naddy" Weisgerber naddy@mips.inka.de
[toc] | [prev] | [standalone]
Back to top | Article view | de.comp.editoren
csiph-web