[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-support] Eine kurze Einfuehrung in vi Was: Re: Wie kann ich einer Datei etwas hinzufügen



Hallo theos

Es gibt viele verschiedene Editoren, doch nur einer ist
praktisch auf jedem UN*X system zu finden: vi.

vi ist nicht jedermanns Sache (ich selbst *liebe* den
vi Improved (vim) und benutze den fuer *alles*) aber
durch die grosse Verbreitung zahlt es sich aus die
grundsaetzlichen Kommandos zu kennen, damit man wenigstens
einmal ein File editieren kann bis man sich seinen
bevorzugten Editor installiert hat.

Eine kurze Einfuehrung in vi:

vi hat glaube ich 3 verschiedene Bearbeutungsmodi (wobei
ich die Namen der modi oefters durcheinanderbringe).
Einige Leute denken das sei umstaendlich oder
altmodisch doch diese Trennung von Eingabemodus und
Kommando Modus (der Name des dritten kommt mir gerade
nicht in den Sinn) hat einige Vorteile. Der
gewichtiste ist vielleicht, dass du in keinem Editor
weniger zu tippen hast um irgendetwas zu machen. Aber
ganz am Anfang muss man sich eben erst daran gewoehnen.

Zuerst das oeffnen deiner lilo.conf Datei zum bearbeiten:
$ vi /etc/lilo.conf

Nun sollte dir eigentlich die Datei angezeigt werden. Wie
du wahrscheinlich gleich bemerken wirst, kannst du nicht
gleich 'drauflos schreiben. Das liegt daran, dass du
dich im Kommandomodus befindest.

Eine erste kleine Navigationshilfe im Kommandomodus:
1G
    zur ersten Zeile in der Datei springen
G
    zur letzten Zeile in der Datei springen
0  (das ist eine Null, kein grosser o)
    zum Zeilenanfang springen
^
    zum ersten Zeichen, das kein Whitespace (Tabulator,
    Space) ist, in der Zeile springen.
$
    zum letzten Zeichen in der Zeile springen
w
    Wortweise vorwaerts springen
b
    Wortweise rueckwaerts springen

Herummanoevrieren solltest du eigentlich mit den
Cursortasten koennen. Man koennte sagen aus
historischen Gruenden sind die Tasten hjkl
auf die Cursortasten gemappt.
h
    Cursor eine Spalte nach links verschieben
j
    Cursor eine Zeile nach unten verschieben
k
    Cursor eine Zeile nach oben verschieben
l
    Cursor eine Spalte nach rechts verschieben

Einen bestimmten Text suchen:
/<pattern>
    Sucht im Text vorwaerts nach <pattern>
?<pattern>
    Sucht im Text rueckwaerts nach <pattern>
n
    Die letzte Suche unter beibehaltung der
    urspruenglichen Richtung wiederholen
N
    Die letzte Suche in entgegen der urspruenglichen
    Richtung wiederholen


Ok. Damit bist du nun kein vi-Navigationsbanause
mehr. Nun kommt der Hoehepunkt, auf den du
bereits seit etlichen Zeilen wartest: das editieren!

Zuerst suchst du dir die Stelle in der Datei, wo
du etwas hineinschreiben willst.

i
    Vor der aktuellen Cursorposition in den
    Eingabemodus wechseln.
a
    Nach der aktuellen Cursorposition in den
    Eingabemodus wechseln.
O  (das ist ein grosses o, keine Null)
    Vor der aktuellen Zeile eine neue Zeile
    hinzufugen und in den Eingabemodus wechseln.
o
    Nach der aktuellen Zeile eine neue Zeile
    hinzufuegen und in den Eingabemodus wechseln


Es gibt noch viele andere nette Kommandos die dir
das Leben erleichtern koennen um Text einzufuegen,
doch mit dieser kleinen Auswahl solltest du die
meisten Sachen 'hinkriegen.

Um den Eingabemodus wieder zu verlassen kannst du
<ESC> benutzen. Du solltest dann wieder im
Kommandomodus landen.

Ein paar weitere Kommandos:

:w
    Die Datei abspeichern
:w <filename>
    Die Datei unter einem neuen Namen abspeichern.
:wq
    Die Datei abspeichern und den Editor verlassen.
:q
    Den Editor verlassen.
:q!
    Den Editor verlassen, ohne Aenderungen zu
    speichern.
:e
    Die Datei neu einlesen
:e <filename>
    Eine andere Datei einlesen
:<n>
    Auf Zeile Nr. <n> springen


So, fertig mit dem Kurs.

Und um dir nachdem ich dich voellig erschreckt
habe mit dieser umstaendlichen Editiererei hier
noch ein kleines Beispiel der Moeglichkeiten in
vi, damit dir die Lust am vi benutzen nicht ganz
auf Ewig vergeht:

Bsp. ein Logfile von syslog (hier fuer xntpd, welcher
meine Systemzeit synchronisiert):

15 Oct 06:48:47 xntpd[20986]: read drift of 127.225 from
/var/lib/ntp/ntp.drift
15 Oct 06:48:47 xntpd[20987]: signal_no_reset: signal 17 had flags
4000000
15 Oct 06:53:37 xntpd[20986]: synchronized to 129.132.1.11, stratum=2
16 Oct 04:05:14 xntpd[20986]: time reset (step) 0.205925 s
16 Oct 04:05:14 xntpd[20986]: synchronisation lost
16 Oct 04:10:33 xntpd[20986]: synchronized to 129.132.1.11, stratum=2
16 Oct 05:34:49 xntpd[20986]: time reset (step) 0.202732 s
16 Oct 05:34:49 xntpd[20986]: synchronisation lost
16 Oct 05:40:09 xntpd[20986]: synchronized to 129.132.1.11, stratum=2
16 Oct 15:38:29 xntpd[20986]: time reset (step) 0.147001 s
16 Oct 15:38:29 xntpd[20986]: synchronisation lost
16 Oct 15:43:48 xntpd[20986]: synchronized to 129.132.1.11, stratum=2
16 Oct 16:59:16 xntpd[20986]: synchronisation lost
16 Oct 17:00:22 xntpd[20986]: synchronized to 129.132.1.11, stratum=2
17 Oct 05:52:51 xntpd[20986]: time reset (step) -0.333236 s
17 Oct 05:52:51 xntpd[20986]: synchronisation lost
17 Oct 05:58:11 xntpd[20986]: synchronized to 129.132.1.11, stratum=2
17 Oct 18:59:58 xntpd[20986]: time reset (step) -0.167278 s
...

Nun ist dieses File sehr lang und sagen, wir, du
interessierst dich nur fuer Eintraege mit
"synchronisation lost".
Mit folgendem Kommando kannst du alle Zeilen ausser
deren, die diesen Text beinhalten, loeschen:

:v/synchronisation lost/d

Uebrig bleiben nur die Zeilen, die dich auch
interessieren...

Dies nur als kleines Beispiel, das allerdings
nur am Rande anzudeuten vermag, was vi noch alles
kann.

Ich hoffe dir geholfen zu haben.

Gruss
 Stefan


Dun Huang wrote:
> 
> Hallo Stefan
> 
> >--- Stefan Haller <stefan.haller at ascom.ch> schrieb:
> >Hallo Dun,
> >
> > Dun Huang wrote:
> > > gerne auch auf dem Windows arbeiten. Nun habe ich
> > mal
> > > unter /sbin/lilo nachgeschaut aber mit dem Befehl
> > > -cat- erscheinen nur bizarre Zeichen, mit denen
> > ich
> > > nichts anfangen kann. Liegt es vielleicht an der
> > > Grafikkarte (rage xpert pro 128), denn ich habe
> > sie
> > > noch nicht installiert, denn Linux erkannte sie
> > nicht
> > > selber. Oder liegt ein installationsfehler vor,
> > oder
> > > kann ich die Datei lilo nicht öffnen, da cat nur
> > > textdateien öffnet?
> >
> > /sbin/lilo ist ein ausfuehrbares Programm und ist
> > daher (wie "bin" in
> > /sbin schon faelschlicherweise zu vermitteln
> > versucht;
> > faelschlicherweise da auch Scripts, die
> > normalerweise in Textformat
> > vorliegen, haefig dort zu finden sind) ein Binary,
> > also eine Datei im
> > Binaerformat. Daher bekommst du auch diese komischen
> > Zeichen.
> >
> > Alle Konfigurationsdateien sollten unter Linux in
> > /etc liegen
> > (Textfiles).
> >
> > Um Windows zu starten kannst du der Datei
> > /etc/lilo.conf folgende
> > Eintraege hinzufuegen:
> >
> > propmt   # beim booten wirst du gefragt, was
> > gebootet werden soll
> > label=win
> > other=/dev/hda1  # hier die jeweilige partition
> > angeben, auf der windows
> >                  # sich befindet. /dev/hda1 ist die
> > erste Partition
> >                  # auf deiner ersten Festplatte
> >
> Gerade hier liegt mein Problem: Wie kann ich einer
> Datei, in diesem Fall die /etc/lilo.conf etwas
> hinzufügen und wie speichert man das ab?
> 
> Ich weiss, tönt wohl etwas diletantisch aber aller
> Anfang ist schwer!
> 
> Vielen Dank, dass Du mir Deine Hilfe angeboten hast.
>                Grüsse theos
> 
> > Weiters interessiert dich vielleicht
> > timeout=n
> > wobei n definiert, wie lange beim booten auf die
> > Eingabe des Labels der
> > entsprechenden Konfiguration gewartet werden soll.
> >
> > Das File abspeichern und den Befehl
> > $ lilo
> > ausfuehren. Der Bootloader wird dann mit der neuen
> > Konfiguration
> > installiert.
> >
> > Beim Booten kannst du dir nun mit <tab> alle Labels
> > anzeigen lassen,
> > sobald
> > LILO:
> > auf deinem Bildschirm erscheint.
> >
> > Durch die Eingabe von
> > LILO: win
> > kannst du nun Windows booten.
> >
> > Ein
> > $ man lilo
> > sollte dir eigentlich weiterhelfen, wenn du mehr
> > Details kennen willst.
> >
> >
> > > Für deine Hilfe wäre ich dir sehr dankbar. Kennst
> > Du
> > > vielleicht noch ein paar chats oder Foren
> > betreffend
> > > Linux, denn wie Du sicher gemerkt hast bin ich
> > noch
> > > ein Anfänger.
> > > Also noch einen schönen Tag und vielen Dank!!!
> >
> > Ich finde, diese Mailingliste ist bereits ein guter
> > Anfang...
> >
> > Wenn du Probleme hast schickst du einfach wieder ein
> > Mail, dann koennen
> > wir dir das genauer erklaeren.
> >
> > Vielleicht wuerde dich die Newsgroup
> > ch.comp.os.linux auch
> > interessieren.
> >
> > Gruss
> >  Stefan
> 
> __________________________________________________________________
> Do You Yahoo!?
> Gesendet von Yahoo! Mail - http://mail.yahoo.de
> Yahoo! Mail auf Ihrem Handy? - http://mobil.yahoo.de