Skip to content

Commit 2a917ad

Browse files
authored
DE translation for overlays (#832)
1 parent 2e0e204 commit 2a917ad

File tree

1 file changed

+256
-0
lines changed

1 file changed

+256
-0
lines changed

de/book/overlays.md

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
# Überlagerungen
2+
3+
4+
Überlagerungen operieren als "Schichten" von Definitionen (Eigene Befehle, Aliase, Umgebungsvariablen),
5+
welche aktiviert und deaktiviert werden können.
6+
Sie gleichen den virtuellen Umgebungen wie man sie von Sprachen wie Python kennt.
7+
8+
_Note: Zum Verständnis von Überlagerungen emphielt es sich [Modules](modules.md) zuerst zu lesen, da es auf ihnen aufbaut._
9+
10+
## Basis
11+
12+
Nushell kommt zuerst mit einer Standard-Überlagerung die sich `zero` nennt.
13+
Welche Überlagerungen aktiv sind, kann mit dem Befehl [`overlay list`](/commands/docs/overlay_list.md) ermittelt werden.
14+
Am Anfang sollte dort der die Standard-Überlagerung gelistet sein.
15+
16+
Um eine neue Überlagerung zu kreieren, wird zuerst ein Modul benötigt:
17+
18+
```
19+
> module spam {
20+
export def foo [] {
21+
"foo"
22+
}
23+
24+
export alias bar = "bar"
25+
26+
export-env {
27+
load-env { BAZ: "baz" }
28+
}
29+
}
30+
```
31+
32+
Dieses Modul wird im ganzen Kapitel verwendet, also wenn immer `overlay use spam` steht, dann ist mit `spam` dieses Modul gemeint.
33+
34+
Um die Überlagerung zu generieren, wird [`overlay use`](/commands/docs/overlay_use.md) aufgerufen:
35+
36+
```
37+
> overlay use spam
38+
39+
> foo
40+
foo
41+
42+
> bar
43+
bar
44+
45+
> $env.BAZ
46+
baz
47+
48+
> overlay list
49+
───┬──────
50+
0 │ zero
51+
1 │ spam
52+
───┴──────
53+
```
54+
55+
Dies hat die Definition des Moduls in den aktuellen Gültigkeitsbereich gebracht und den [`export-env`](/commands/docs/export-env.md) Block ausgewertet.
56+
Genau so wie dies auch der [`use`](/commands/docs/use.md) Befehl tut. (see [Modules](modules.md#environment-variables) chapter)
57+
58+
::: tip
59+
Im folgenden Abschnitt wird der `>` prompt mit dem Namen des zuletzt aktivierten Überlagerung vorangestellt.
60+
`(spam)> some-command` bedeutet, die `spam` Überlagerung ist die zuletzt aktive Überlagerung wenn der Befehl eingegeben wurde.
61+
:::
62+
63+
## Eine Überlagerung entfernen
64+
65+
Wenn die Überlagerung nicht mehr benötigt wird, entfernt sie der Befehl [`overlay hide`](/commands/docs/overlay_remove.md):
66+
67+
```
68+
(spam)> overlay hide spam
69+
70+
(zero)> foo
71+
Error: Can't run executable...
72+
73+
(zero)> overlay list
74+
───┬──────
75+
0 │ zero
76+
───┴──────
77+
```
78+
79+
Überlagerungen haben ebenfalls einen Gültigkeitsbereich.
80+
Jede hinzugefügte Überlagerung wird entfernt, wenn der Gütligkeitsbereich endet:
81+
82+
```
83+
(zero)> do { overlay use spam; foo } # Überlagerung ist aktiv innerhalb des Blocks
84+
foo
85+
86+
(zero)> overlay list
87+
───┬──────
88+
0 │ zero
89+
───┴──────
90+
```
91+
92+
Wird der Befehl [`overlay hide`](/commands/docs/overlay_remove.md) ohne Argument aufgerufen, so wird die zuletzt aktivierte Überlagerung entfernt.
93+
94+
## Überlagerungen sind aufgezeichnet
95+
96+
Eine neue Definition (Befehl, Alias, Umgebungsvariable) wird in der zuletzt aktivierten Überlagerung aufgezeichnet:
97+
98+
```
99+
(zero)> overlay use spam
100+
101+
(spam)> def eggs [] { "eggs" }
102+
```
103+
104+
Der `eggs` Befehl gehört zur `spam` Überlagerung.
105+
Wird diese entfernt, ist auch der Befehl nicht mehr aufrufbar:
106+
107+
```
108+
(spam)> overlay hide spam
109+
110+
(zero)> eggs
111+
Error: Can't run executable...
112+
```
113+
114+
Er ist jedoch nicht verloren!
115+
116+
```
117+
(zero)> overlay use spam
118+
119+
(spam)> eggs
120+
eggs
121+
```
122+
123+
Überlagerungen speichern die Informationen, die ihnen übergeben werden, auch wenn die Überlagerung entfernt wird.
124+
So kann mehrfach zwischen verschiedenen Kontexten gewechselt werden.
125+
126+
::: tip
127+
Es gibt Momente, in denen Definitionen nicht zu einer Überlagerung hinzugefügt werden sollen.
128+
Die Lösung dafür ist, eine leere Überlagerung zu erstellen und die Definitionen temporär nur dort zu speichern:
129+
130+
```
131+
(zero)> overlay use spam
132+
133+
(spam)> module scratchpad { }
134+
135+
(spam)> overlay new scratchpad
136+
137+
(scratchpad)> def eggs [] { "eggs" }
138+
```
139+
140+
Der `eggs` Befehl wird zu `scratchpad` hinzugefügt, während `spam` intakt bleibt.
141+
142+
Um dies weniger wortreich zu machen, reicht der Befehl [`overlay new`](/commands/docs/overlay_new.md):
143+
144+
```
145+
(zero)> overlay use spam
146+
147+
(spam)> overlay new scratchpad
148+
149+
(scratchpad)> def eggs [] { "eggs" }
150+
```
151+
152+
:::
153+
154+
## Vorangestellte Überlagerungen
155+
156+
Der [`overlay use`](/commands/docs/overlay_use.md) Befehl übernimmt alle Befehle und Aliase des Moduls und fügt sie seinem Namensbereich hinzu.
157+
Sie können jedoch auch als Unterbefehl hinter dem Modulnamen stehen.
158+
Dafür ist das `--prefix` Argument da:
159+
160+
```
161+
(zero)> module spam {
162+
export def foo [] { "foo" }
163+
}
164+
165+
(zero)> overlay use --prefix spam
166+
167+
(spam)> spam foo
168+
foo
169+
```
170+
171+
Dies gilt jedoch nicht für Umgebungsvariablen.
172+
173+
## Eine Überlagerung umbenennen
174+
175+
Der Name einer Überlagerung kann mit `as` geändert werden:
176+
177+
```
178+
(zero)> module spam { export def foo [] { "foo" } }
179+
180+
(zero)> overlay use spam as eggs
181+
182+
(eggs)> foo
183+
foo
184+
185+
(eggs)> overlay hide eggs
186+
187+
(zero)>
188+
```
189+
190+
Dies kann sinnvoll sein, wenn ein generischer Skript Name einer virtuellen Umgebung wie `activate.nu` verwendet wird,
191+
um dieser einen Namen zu geben, der sie besser beschreibt.
192+
193+
## Definitionen behalten
194+
195+
Manchmal ist es nicht gewünscht, dass Definitionen, die in einer Überlagerungen gemacht wurden, verloren gehen, wenn diese entfernt wird:
196+
197+
```
198+
(zero)> overlay use spam
199+
200+
(spam)> def eggs [] { "eggs" }
201+
202+
(spam)> overlay hide --keep-custom spam
203+
204+
(zero)> eggs
205+
eggs
206+
```
207+
208+
Das `--keep-custom` Argument macht genau das.
209+
210+
Es ist auch möglich, eine Liste von Umgebungsvariablen, welche in der Überlagerung definiert wurden, zu behalten, und den Rest zu entfernen.
211+
Dafür wird das `--keep-env` Argument verwendet:
212+
213+
```
214+
(zero)> module spam {
215+
export def foo [] { "foo" }
216+
export-env { let-env FOO = "foo" }
217+
}
218+
219+
(zero)> overlay use spam
220+
221+
(spam)> overlay hide spam --keep-env [ FOO ]
222+
223+
(zero)> foo
224+
Error: Can't run executable...
225+
226+
(zero)> $env.FOO
227+
foo
228+
```
229+
230+
## Überlagerungen ordnen
231+
232+
Überlagerungen sind wie ein Stapel organisiert.
233+
Wenn mehrere Überlagerungen die gleiche Definition enthalten, z.B. `foo`, dann wird die der zuletzt aktivierten verwendet.
234+
Um eine Überlagerung im Stapel nach oben zu bringen, wird einfach der Befehl [`overlay use`](/commands/docs/overlay_use.md) nochmals aufgerufen:
235+
236+
```
237+
(zero)> def foo [] { "foo-in-zero" }
238+
239+
(zero)> overlay use spam
240+
241+
(spam)> foo
242+
foo
243+
244+
(spam)> overlay use zero
245+
246+
(zero)> foo
247+
foo-in-zero
248+
249+
(zero)> overlay list
250+
───┬──────
251+
0 │ spam
252+
1 │ zero
253+
───┴──────
254+
```
255+
256+
Nun hat die `zero` Überlagerung wieder Vorrang.

0 commit comments

Comments
 (0)