ich bin auf der Suche nach einem Editor mit dem ich vertikal markieren kann.
Mit dem Editor soll es möglich sein, bestimmte Spalten zu markieren und
danach entweder zu löschen oder mit bestimmten Zeichen zu füllen.
Hintergrund: Codeblöcke als Kommentar makrieren oder überflüssige Spalten in
CSV-Files zu löschen etc...
Kann ich so was mit VI oder EMACS bewältigen? Gibt es andere Editoren?
Danke und Gruß
Mohamed Ali Missaoui
> ich bin auf der Suche nach einem Editor mit dem ich vertikal markieren kann.
> Mit dem Editor soll es möglich sein, bestimmte Spalten zu markieren und
> danach entweder zu löschen oder mit bestimmten Zeichen zu füllen.
Was genau meinst Du mit "mit bestimmten Zeichen füllen"?
> Kann ich so was mit VI oder EMACS bewältigen?
VI vermutlich nicht, vim absolut problemlos (einfach nur ctrl+v
drücken), Emacs vermutlich ähnlich einfach. In nedit geht's auch noch:
Ctrl gedrückt halten und mit der Maus markieren.
> Gibt es andere Editoren?
Tausende. Aber ob die einen rechteckigen Block markieren können...?
Tschau,
Ingo
--
Hobbes: How come we play war and not peace?
Calvin: Too few role models. -- Bill Watterson, Calvin and Hobbes
Emacs und XEmacs können Spaltenblöcke markieren und löschen. Das mit
dem Zeichen auffüllen ist mir nicht ganz klar, was ist damit gemeint:
"mit bestimmten Zeichen zu füllen"?
Heino
PS.: Blockweise markieren kann unter Windows auch Textpad
>Mit dem Editor soll es möglich sein, bestimmte Spalten zu markieren und
>danach entweder zu löschen
Emacs: C-x r k (kill-rectangle)
>oder mit bestimmten Zeichen zu füllen.
C-x r k (string-rectangle), wenn ich dich richtig verstehe. Ersetzt
den markierten Block in jeder Zeile durch den eingegebenen String.
Es gibt natürlich auch noch C-x r y mit dem du ein Rechteck durch ein
anderes (gleich hohes) ersetzen kannst.
>Kann ich so was mit VI oder EMACS bewältigen? Gibt es andere Editoren?
mit vi muss man sich vermutlich mit einem :,s/x/y/ pattern helfen (das
ging auch schon bei ed). vim kann es vermutlich bequemer. Emacs siehe
oben.
Michael
--
"New" PGP Key! User ID: Michael Schierl <schi...@gmx.de>
Key ID: 0x58B48CDD Size: 2048 Created: 26.03.2002
Fingerprint: 68CE B807 E315 D14B 7461 5539 C90F 7CC8
http://home.arcor.de/mschierlm/mschierlm.asc
Geht auch über die Tastatur mittels Shift+Alt und Pfeiltasten.
>> Gibt es andere Editoren?
>
> Tausende. Aber ob die einen rechteckigen Block markieren können...?
Genaugenommen kann emacs keinen rechteckigen Block *markieren*.
(Es sei denn es gibt irgendwo irgendwelche Zusatzpakete.)
Ansonsten gibt es viele Editoren die das können, Jedit, ja selbst
sehr simple Dinger wie Proton.
Gruß,
Jörg
> Ingo van Lil wrote:
>> Mohamed Ali Missaoui schrieb:
>>> Gibt es andere Editoren?
>>
>> Tausende. Aber ob die einen rechteckigen Block markieren können...?
>
> Genaugenommen kann emacs keinen rechteckigen Block *markieren*.
> (Es sei denn es gibt irgendwo irgendwelche Zusatzpakete.)
Naja, nicht optisch.
Beim GNU-Emacs weiss ich nicht, das sieht man eh nie eine Markierung,
oder? Beim XEmacs wird leider der Block nicht blockweise markiert,
sondern zeilenweise, so jedenfalls die Optik.
Unabhängig von der Optik ist aber wirklich nur der block *markiert*.
Heino
> Joerg Fischer <jf...@yahoo.de> wrote:
>
>> Ingo van Lil wrote:
>>> Mohamed Ali Missaoui schrieb:
>>>> Gibt es andere Editoren?
>>>
>>> Tausende. Aber ob die einen rechteckigen Block markieren können...?
>>
>> Genaugenommen kann emacs keinen rechteckigen Block *markieren*.
>> (Es sei denn es gibt irgendwo irgendwelche Zusatzpakete.)
>
> Naja, nicht optisch.
>
> Beim GNU-Emacs weiss ich nicht, das sieht man eh nie eine Markierung,
> oder?
`M-x transient-mark-mode RET' hilft. Auch mal `C-h f transient-mark-mode
RET' lesen.
Frank
>> Genaugenommen kann emacs keinen rechteckigen Block *markieren*.
>> (Es sei denn es gibt irgendwo irgendwelche Zusatzpakete.)
>
>Naja, nicht optisch.
>
>Beim GNU-Emacs weiss ich nicht, das sieht man eh nie eine Markierung,
>oder?
man transient-mark-mode
>Beim XEmacs wird leider der Block nicht blockweise markiert,
>sondern zeilenweise, so jedenfalls die Optik.
Für die Optik hilft rect-mark.el. Aber wofür braucht man das?
> Heino Tiedemann <rotkaps_...@gmx.de> wrote:
>>Beim XEmacs wird leider der Block nicht blockweise markiert,
>>sondern zeilenweise, so jedenfalls die Optik.
>
> Für die Optik hilft rect-mark.el. Aber wofür braucht man das?
eben.
Heino
Wäre tatsächlich nur der Block markiert, bräuchte man die Editier-
befehle, die auf den Block wirken sollen, nicht extra mit C-r
einzuleiten. Ich kenne ehrlich gesagt keinen anderen Editor, der so
verfährt. Üblicherweise markiert man einen Block und dann wirken
die Editierbefehle eben auf diesen.
Bei einem Editor, der darüberhinaus Drag and Drop unterstützen würde
(kann man natürlich auch über Cut and Paste machen), würde es ohne
visuelles Feedback etwas seltsam werden.
Gruß,
Jörg
> Hallo,
>
> ich bin auf der Suche nach einem Editor mit dem ich vertikal markieren kann.
> Mit dem Editor soll es möglich sein, bestimmte Spalten zu markieren und
> danach entweder zu löschen oder mit bestimmten Zeichen zu füllen.
jedit http://www.jedit.org/
kann das ebenso.
gruesse
Damit ist gemeint, daß ich zum Beispiel einen Block mit zwei Zeichen
markiere und mit dem Zeichen "/" oder mit Leerzeichen fülle. So was wird
beim Programmieren gebraucht, um z.B. Code-Abschnitte zu kommentieren und
einzurücken.
Gruß
Mohamed
> Was genau meinst Du mit "mit bestimmten Zeichen füllen"?
Damit ist gemeint, daß ich zum Beispiel einen Block mit zwei Zeichen
Schau dir den vim in Zusammenarbeit mit boxes an. Das wurde erst vor
kurzem hier diskutiert.
--
Jens Kubieziel http://www.kubieziel.de
Wenn dies eine Diktatur wäre, wäre alles ein Stück einfacher, so lange
ich der Diktator bin. George W. Bush
> Damit ist gemeint, daß ich zum Beispiel einen Block mit zwei Zeichen
> markiere und mit dem Zeichen "/" oder mit Leerzeichen fülle. So was
> wird beim Programmieren gebraucht, um z.B. Code-Abschnitte zu
> kommentieren und einzurücken.
Das ist aber, vorsichtig ausgedrückt, eine etwas ungewöhnliche Art,
Blöcke auszukommentieren. Normalerweise fügt man die Kommentarzeichen am
Anfang der Zeile ein, bestehende Zeichen zu ersetzen geht ganz furchtbar
schief, wenn manche Zeilen nicht weit genug oder mit Tabs eingerückt
sind. Und wie Du auf diese Weise bestehende Blöcke einrücken willst, ist
mir auch schleierhaft.
Blöcke mit // kommentieren kannst Du ganz einfach, indem Du den
Zeilenanfang durch // ersetzt, z.B. in vim :s:^:// . Einrücken geht noch
einfacher, dazu gibt es die Kommandos '<' und '>', die einen markiereten
Block nach links oder rechts verschieben (wahlweise mit Tabs, einer
bestimmten Anzahl Leerzeichen oder Tabs und Leerzeichen gemischt).
In nedit gibt es sowohl Macro/C Comments als auch Edit/Shift Left bzw.
Edit/Shift Right. Das scheint auch ziemlich genau das zu sein, was Du
suchst.
> Heino Tiedemann wrote:
>> Michael Schierl <schierl...@gmx.de> wrote:
>>
>>> Heino Tiedemann <rotkaps_...@gmx.de> wrote:
>>>>Beim XEmacs wird leider der Block nicht blockweise markiert,
>>>>sondern zeilenweise, so jedenfalls die Optik.
[..]
> Wäre tatsächlich nur der Block markiert, bräuchte man die Editier-
> befehle, die auf den Block wirken sollen, nicht extra mit C-r
> einzuleiten. Ich kenne ehrlich gesagt keinen anderen Editor, der so
> verfährt. Üblicherweise markiert man einen Block und dann wirken
> die Editierbefehle eben auf diesen.
Ja, Emacsen manchemal "anders" ;-)
Heino
Schau dir mal cua.el für Emacs an, das hat einen ziemlich genialen
"rectangle support": http://www.cua.dk/cua.html
ciao,
noniq
Moin,
> ich bin auf der Suche nach einem Editor mit dem ich vertikal markieren
> kann.
da es nur ein Editor sein soll, empfehle ich Dir vim (www.vim.org); aus
meiner Sicht definitiv leichter zu lernen als der King of Editors (X)Emacs
- o.k., sehr viel Zeit hab ich für den König nie investiert.
Da Du scheinbar aus der Windows-Welt kommst, wirst Du ein paar Probleme mit
vim haben, weil es sich um einen modalen Editor handelt.
Ansonsten:
:set nosol (empfiehlt sich, da Du sonst bei Markierung einer kompletten
Spalte immer am Zeilenanfang landest)
STRG + Q (unter Windows)
G (Landung in der letzten Zeile)
l (=rechts erweitern)
> Mit dem Editor soll es möglich sein, bestimmte Spalten zu
> markieren
s.o.
> und danach entweder zu löschen
c und danach ESC
> oder mit bestimmten Zeichen
> zu füllen.
c
schreiben
ESC (und staunen)
> Hintergrund: Codeblöcke als Kommentar makrieren oder
> überflüssige Spalten in CSV-Files zu löschen etc...
in CSV-Dateien jibt es keine gleichmäßig angeordneten Spalten es sei denn,
die Feldinhalte haben immer eine gleich große Anzahl von Zeichen
>
> Kann ich so was mit VI oder EMACS bewältigen? Gibt es andere Editoren?
Sofern Du in der Windows-Welt (konzeptionell) bleiben möchtest, empfehle
ich Dir Ultraedit (mußt halt a wegn was hinlegen) ansonsten ist VIM ein
echt geiles Teil, für das sich der Zeitaufwand lohnt - das kannst Du
natürlich erst feststellen, wenn Du dich mal eine Zetlang daruf einläßt.
Über www.vim.org findest Du auch einen Link auf ein Buch in PDF-Form; das
bezieht sich zwar auf Version 5.2 ist aber fürs Lernen meiner Erfahrung
nach vollkommen ausreichend.
>
> Danke und Gruß
>
> Mohamed Ali Missaoui
>
>
Ebenfalls Gruß
Oliver Peters
> Joerg Fischer <jf...@yahoo.de> wrote:
[...]
>> Wäre tatsächlich nur der Block markiert, bräuchte man die Editier-
>> befehle, die auf den Block wirken sollen, nicht extra mit C-r
>> einzuleiten. Ich kenne ehrlich gesagt keinen anderen Editor, der so
>> verfährt. Üblicherweise markiert man einen Block und dann wirken
>> die Editierbefehle eben auf diesen.
>
> Ja, Emacsen manchemal "anders" ;-)
[...]
In diesem Falle aber: leider.
Es ist IMO eine bessere UI, wenn ein Kommando das Richtige tut,
abhängig von der Art der Auswahl: Rechteck (block) oder normale
(inline) region. Das gilt sowohl für Ausschneiden und Einfügen als
auch für `query-replace' et al..
Natürlich ist es wichtig, dass die bisherige Art und Weise ebenfalls
funktioniert. Aus zwei Gründen: 1) einige Leute mögen den
`transient-mark-mode' nicht und diese UI macht nur Sinn, wenn es auch
ein visuelles Feedback gibt. 2) eine Benutzerin sollte ihre Meinung
noch ändern können, _nachdem_ sie einen Bereich markiert hat.
Allerdings wäre es wünschenswert, dass Emacs bei default es a)
erlaubt, dass man ein Rechteck visuell markieren kann (wenn
`transient-mark-mode' non-nil ist) und b) alle Kommandos, für die das
sinnvoll möglich ist, nur auf ein solches Rechteck einwirken.
Wie schon jemand erwähnt hat, unterstützt cua-mode das zum großen Teil
(`S-RET', es wirkt allerdings nicht mit `query-replace' zusammen). Es
wäre nur wünschenswert, wenn dieses feature aus cua ausgegliedert
wäre.
Leider fand wohl bisher niemand diese feature wichtig genug, um
letzteres auch zu tun.
Oliver
--
Oliver Scholz, 14 Vendémiaire an 212 de la Révolution
Use UTF-8: http://www.cl.cam.ac.uk/~mgk25/unicode.html#linux
http://www.tldp.org/HOWTO/Unicode-HOWTO-1.html#ss1.1
[Wenn das Deine bevorzugte Art ist, bin ich der Letzte, der Dich
daran hindern möchte. Ich will hier nur erwähnen, dass es für die
beiden Punkte, die Du erwähnst bessere Möglichkeiten gibt. Das ändert
nichts daran, dass Rechteckauswahl eine gute Sache ist.]
Der traditionelle Weg in Emacs Code einzurücken, geschieht über
syntaktische Einrückung. (Man drückt eine Taste und Emacs DTRT, um
die gegenwärtige Zeile einzurücken, abhängig von der
Programmiersprache, die man bearbeitet.) Wenn man unbedingt eine
explizite Einrückung braucht, gibt es das Kommando 'C-x TAB'.
Für das Kommentieren/Auskommentieren gibt es
`M-;'.
Beides kommt beim Programmieren so häufig vor, dass es IMNSHO zu
umständlich ist, es über das Füllen eines Rechtecks mit Leerzeichen
oder Kommentarzeichen zu erledigen.
>Wie schon jemand erwähnt hat, unterstützt cua-mode das zum großen Teil
>(`S-RET', es wirkt allerdings nicht mit `query-replace' zusammen).
Das liegt vermutlich daran, dass es (so weit ich weiß) keine
rectangle-fähige Version von `query-replace(-regexp)' gibt.
Das wäre wohl auch nicht so einfach. Entweder prüft man bei jedem Hit
in der angegebenen Region, ob er im Rectangle liegt (was auch nicht
gerade trivial ist, die Replace-Funktion ist immerhin 282 Zeilen
lang), oder man kopiert das Rectangle vorher in einen Temp-buffer
(worauf die Anzeige yes/no/all auch nur diesen anzeigt).
> Der traditionelle Weg in Emacs Code einzurücken, geschieht über
> syntaktische Einrückung. (Man drückt eine Taste
Meist Tab.
> und Emacs DTRT,
Emacs was?
> Für das Kommentieren/Auskommentieren gibt es
> `M-;'.
Hm, im C-Mode fügt man damit einen Kommentar an die Zeile an. // so.
// um einen ganzen Block
// auszukommentieren
// benutzt man C-c C-c.
In Lisp scheint das anders zu sein. Im Message-Mode auch, dort wird
gequotet.
> Beides kommt beim Programmieren so häufig vor, dass es IMNSHO zu
> umständlich ist, es über das Füllen eines Rechtecks mit Leerzeichen
> oder Kommentarzeichen zu erledigen.
mfg, simon .... genau
> Es ist IMO eine bessere UI, wenn ein Kommando das Richtige tut,
> abhängig von der Art der Auswahl: Rechteck (block) oder normale
> (inline) region. Das gilt sowohl für Ausschneiden und Einfügen als
> auch für `query-replace' et al..
Ack.
> Natürlich ist es wichtig, dass die bisherige Art und Weise ebenfalls
> funktioniert.
Natürlich, die meiste Zeit will man es ja klassisch.
> Aus zwei Gründen: 1) einige Leute mögen den `transient-mark-mode'
> nicht und diese UI macht nur Sinn, wenn es auch ein visuelles Feedback
> gibt.
Was hat denn das damit zu tun? Das gilt doch für den klassischen Weg
genauso.
> 2) eine Benutzerin sollte ihre Meinung noch ändern können, _nachdem_
> sie einen Bereich markiert hat.
Ja.
> Allerdings wäre es wünschenswert, dass Emacs bei default es a)
> erlaubt, dass man ein Rechteck visuell markieren kann (wenn
> `transient-mark-mode' non-nil ist) und
Das sollte auch nicht-visuell gehen.
> b) alle Kommandos, für die das sinnvoll möglich ist, nur auf ein
> solches Rechteck einwirken.
Ja.
> Wie schon jemand erwähnt hat, unterstützt cua-mode das zum großen Teil
> (`S-RET', es wirkt allerdings nicht mit `query-replace' zusammen). Es
> wäre nur wünschenswert, wenn dieses feature aus cua ausgegliedert
> wäre.
Man könnte sowas wie ein Rectangle-Flag einführen. Vielleicht als Minor-
Mode. Dann muss man jeden einzelnen Kommando beibringen, sich dort
anders zu verhalten. Vielleicht geht das größtenteils über gemeinsame
Utility-Funktionen.
mfg, simon .... introducing another level of indirection
> * Oliver Scholz <alkib...@gmx.de> (10:55) schrieb:
[...]
>> und Emacs DTRT,
>
> Emacs was?
[...]
does the Right Thing.
:)
Oliver
--
Oliver Scholz, 15 Vendémiaire an 212 de la Révolution
> * Oliver Scholz <alkib...@gmx.de> (10:43) schrieb:
[Rechteckauswahl und Operationen darauf]
>> Aus zwei Gründen: 1) einige Leute mögen den `transient-mark-mode'
>> nicht und diese UI macht nur Sinn, wenn es auch ein visuelles Feedback
>> gibt.
>
> Was hat denn das damit zu tun? Das gilt doch für den klassischen Weg
> genauso.
[...]
>> Allerdings wäre es wünschenswert, dass Emacs bei default es a)
>> erlaubt, dass man ein Rechteck visuell markieren kann (wenn
>> `transient-mark-mode' non-nil ist) und
>
> Das sollte auch nicht-visuell gehen.
[...]
Ich glaube, dass diese UI viel von ihrer Überzeugungskraft verliert,
wenn man sich zu dem Zeitpunkt, da man das Kommando eingeben will,
doch wieder konzentrieren muss: „Habe ich nun gerade eben ein Rechteck
ausgewählt oder eine normale region?“ Ich glaube in dem Fall sind die
klassischen rectangle-Befehle besser.
Aber solche Detaills diskutiert man vielleicht besser erst, wenn sich
jemand findet, der bereit ist, das zu implementieren. (Ich bin es
nicht.) Vielleicht gibt es ja auch andere Möglichkeiten, damit
umzugehen.
Oliver
--
Oliver Scholz, 15 Vendémiaire an 212 de la Révolution
>> Für das Kommentieren/Auskommentieren gibt es
>> `M-;'.
>
>Hm, im C-Mode fügt man damit einen Kommentar an die Zeile an. // so.
bei mir macht M-; wenn ich was markiert habe, /* */ um jede Zeile
rum.
>
>// um einen ganzen Block
>// auszukommentieren
>// benutzt man C-c C-c.
C-c C-c auch.
im Java-Mode machen bei mir beide // vorne hin.
>In Lisp scheint das anders zu sein.
Im Lisp-Mode bei mir auch (C-c C-c hab ich ihm da aber selber
beigebracht).
Wenn ich nichts markiert habe, verhalten sich die Befehle verschieden,
da hast du Recht.
> bei mir macht M-; wenn ich was markiert habe, /* */ um jede Zeile
> rum.
Bei mir wahrscheinlich auch, ich bin nur nie auf die Idee gekommen, das zu
probieren. Das Kürzel macht mit Lisp-Syntax ja auch plötzlich Sinn.
mfg, simon .... wieder was gelernt
> Ich glaube, dass diese UI viel von ihrer Überzeugungskraft verliert,
> wenn man sich zu dem Zeitpunkt, da man das Kommando eingeben will,
> doch wieder konzentrieren muss: „Habe ich nun gerade eben ein Rechteck
> ausgewählt oder eine normale region?“ Ich glaube in dem Fall sind die
> klassischen rectangle-Befehle besser.
Man muss sich auch an den Overwrite-Mode erinnern (die Modeline hilft),
oder das man überhaupt etwas markiert hat. Der Transient-Mark-Mode ist
doch dazu da, Leuten ein visuelles Feedback zu geben, die das brauchen.
Wer das normal nicht braucht, braucht das plötzlich für Rectangles?
Wie du siehst, ich arbeite ohne. :-)
> Aber solche Detaills diskutiert man vielleicht besser erst, wenn sich
> jemand findet, der bereit ist, das zu implementieren. (Ich bin es
> nicht.) Vielleicht gibt es ja auch andere Möglichkeiten, damit
> umzugehen.
Ack. Mein Bedarf an markierten Rechtecken ist irgendwo bei Null.
mfg, simon .... l