PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [zsh] zshenv, Eigenheiten



Hun
27.08.04, 13:22
Gleich von vorne weg: Dies ist kein HowTo wie man die ZShell in allem drum und dran konfiguriert (davon gibt es schon genügend bei google ;))

Servus Leute!

Meine zshenv (http://wurscht.menschenkatapult.org/.zshenv) ist mittlerweile im IRC von Linuxforen.de recht beliebt geworden, hier folgen die Erklärungen wie sich das ganze bedienen lässt.
Für die die noch nich damit gearbeitet haben: Diese Datei gehört in euer ~


Erweiterungen
Completion mit Menü
Bei mehreren Auswahlmöglichkeiten ist bei den meisten Shells in der Standardconfig ein beep mit den Auswahlmöglichkeiten voreingestellt, allerdings muss man diese dann selbst tippen. Meine Änderung: Bei mehreren Möglichkeiten erhält man ein Menü mit Cursorsteuerung, um einem die Arbeit zu erleichtern.
Screenshot (http://wurscht.menschenkatapult.org/zsh/comp1.jpg)


Rekursive Completion
Die Completion funktioniert auch Rückwärts (Screenshot ( http://wurscht.menschenkatapult.org/zsh/comp2.jpg)) und in der Mitte eines Befehls, außerdem werden Rechtschreibfehler nach Möglichkeit korrigiert


History
Ist bei der bash in der Basisconfig gang und gäbe, bei der zsh muss sie manuell eingebunden werden. In der vorliegenden Config wird alles nach ~/.history gespeichert und lässt sich von allen zshs des Users mit Shift+Cursor rauf/runter abfragen; ausserdem kann man mit dem Historykürzel !? suchen.
Mit Ctrl-r wird ein search-Dialog für die History aufgerufen, was einige Leute für komfortabler halten


Job-Completion
Bei Job-orientierten Prozessen (z.b. kill, killall und renice) werden die Jobs completet und als Menü dargestellt
Vorher (wurscht.menschenkatapult.org/zsh/kill1.jpg)
Nachher (wurscht.menschenkatapult.org/zsh/kill2.jpg)
Außerdem werden auch Printerjobs aufgeführt wenn lp* aufgerufen wird.


AutoCD
Da cd VERZEICHNIS etwas lang ist, ist es auf VERZEICHNIS gekürzt worden. Hierbei gilt: Befehl hat Vorrang vor Verzeichnis, d.h. wenn ihr ein Verzeichnis "test" habt, geht es nicht, test zu tippen, weil das schon ein Programm ist und dann aufgerufen wird.
Screenshot (wurscht.menschenkatapult.org/zsh/autocd.jpg)
Außerdem wird bei einem CD nur noch Verzeichnisse und links auf diese angezeigt, Dateien werden ausgeblendet.


Netz-Completion
Bei Internet-orientierten Befehlen werden die in /etc/hosts bekannten Hosts completet.
Screenshot (wurscht.menschenkatapult.org/zsh/ping.jpg)

Und dann noch ein Paar Bindings um die Arbeit zu beschleunigen
Del, Ins, Home, End wie üblich eingebunden
PgUp, PgDown Wort vor/zurück
Alt-c Wörter tauschen
Alt-y Buchstaben tauschen
Alt-1/2 Undo/Redo
... ../..
.... ../../..
..... ../../../..
...... ../../../../..



Sind zwar nicht alle eingebauten Features, aber sollte das Arbeiten um einiges beschleunigen


Eigene Bindings:
Eigene Tasturkürzel werden in der .zshconfig über "bindkey" eingebunden :


bindkey '^[[3~' delete-char bzw bindkey 'CODE' AKTION

Die Tastaturcodes kann man z.B. dadurch herausfinden, dass man aus einer Konsole heraus ein X-abhängiges Programm startet (mein Tip: xeyes ;)). Mögliche Aktionen bekommt man mit

man zshzle
in der Konsole.


Falls Bugs bei der zshenv auftreten oder Änderungen gewünscht sind, PM an mich


Special Thx to

MiGo (hat beim Debuggen geholfen)
Sepp2k (für den Prompt) (ich mein es war Sepp2k, falls das falsch is werd ich das schnellstmöglich korrigieren ;))
Netzmeister (für dieses Forum)
Zhong Shao (für die zsh)


Thx To

Jan/WilliaM (dafür dass er mir die config nach nem datencrash wieder gegeben hat/Betatesting)
AceTheFace
mehlvogel
und noch einige andere ;)

Hun
09.09.04, 00:50
Update

Eigentlich vorerst nur ein weiteres Binding, Alt-S um das zuletzt getippte Wort zu kopieren (ist sinnvoll um z.B. eine Date.bak zu erstellen)


Um eigene Funktionen einzubauen/vorhandene zu verändern:
Schaut euch mal in $fpath um, da sind alle schon vorgefertigten, sind leicht verständlich


Praktische Funktionen die ich euch nicht vorenthalten will (Standardeinstellung):
Alt-H: Rufe zum aktuellen Befehl die Manpage auf, führe die Zeile nach schließen der man fort
Alt-Q: Speichere die aktuelle Zeile in einem Buffer und lösche sie, nachdem der neue Befehl beendet ist fahre mit der vorherigen fort (Nützlich um bei langen Befehlen schnell mal einen kurzen dazwischen zu schieben)


MFG



ToDo:
Mehr Funktionen für Completion schreiben
Das ganze übersichtlich in .zshrc (für Befehle) und .zshenv (für aliases und variablen) gliedern

Hun
07.01.05, 11:23
Update

Diesesmal schön untergliedert in Zshenv und Zshrc
In der env stehen Variablen und Aliases
In der rc steht alles um die shell selber einzustellen

Hinzugefügt

Mail-Benachrichtigung
(Bei allen Maildirs, die in der Variable in der zshenv stehen, bekommt man wenn was neues da ist eine selbst definierte zeile - bringt nur was beim Einsatz von fetchmail o.ä.)

Ein paar zusätzliche Aliases
(War eigentlich nur zu faul, die rauszunehmen, aber vielleicht haben da noch mehr Leute interesse daran, vor allem das mit irssi ist praktisch wenn man öfter X neu startet..)

Mathematische Funktionen
(Relativ einfach, werden wie Shell-Variablen behandelt, nach C-Syntax alles was zwischen $(( )) steht (die Abstände vor und nach den Klammern sind wichtig)

Erweitertes Auto-CD
(Kann störend sein, falls nicht gewünscht die Zeile
cdpath=(~ .)
aus der zshenv entfernen;
Es wird nach Priorität erst in ein Verzeichnis in ~ gewechselt (brauch ich öfter, ist wahrscheinlich bei vielen anders. Beispiel


/data/foo % cd t
/home/hun/t/ %

Links

ZSHENV (wurscht.menschenkatapult.org/zsh/.zshenv)
ZSHRC (wurscht.menschenkatapult.org/zsh/.zshrc)




Viel Spaß an alle ;)