Skip to content

Commit 13ed311

Browse files
authored
DE translation for custom_completions.md (#1056)
* DE translation for custom_completions.md * Typos and better wording in DE translation
1 parent 3ac7de4 commit 13ed311

File tree

3 files changed

+179
-1
lines changed

3 files changed

+179
-1
lines changed

.vuepress/configs/sidebar/de.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const sidebarDe: SidebarConfig = {
2828
'plugins',
2929
'von_bash_kommend',
3030
'command_reference',
31+
'custom_completions',
3132
'coloring_and_theming',
3233
'overlays',
3334
'command_signature',

de/book/custom_completions.md

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# Eigene Vervollständigungen
2+
3+
Eigene Vervollständigungen kombinieren zwei Merkmale von Nushell:
4+
Eigene Befehle und Vervollständigungen. Mit ihnen können Befehle erzeugt werden,
5+
die Vervollständigungen für Positions- sowie Markierungs-Argumente enthalten.
6+
Die eigenen Vervollständigungen funktionieren für eigene Befehle und [bekannt gemachte externe Befehle (via `extern`)](externs.md).
7+
8+
Eigene Vervollständigungen bestehen aus zwei Teilen:
9+
Dem Befehl, der die Vervollständigung bereitstellt, und die Verknüpfung mit dem Argument des Befehls, der die Vervollständigung bekommt, mit Hilfe von `@`.
10+
11+
## Beispiel eigene Vervollständigung
12+
13+
Hier ein Beispiel:
14+
15+
```
16+
> def tiere [] { ["katze", "hund", "aal" ] }
17+
> def my-command [tier: string@tiere] { print $tier }
18+
>| my-command
19+
katze hund aal
20+
```
21+
22+
In der ersten Zeile wird ein eigener Befehl erstellt, der eine Liste von drei verschiedenen Tieren zurückgibt.
23+
Dies sind die Werte, die in der Vervollständigung verwendent werden. Ist dieser Befehl erstellt, kann er für weitere Vervollständigungen von Befehlen und [`extern`](/commands/docs/extern.md) verwendet werden.
24+
25+
In der zweiten Zeile, wird `string@tiere` verwendet.
26+
Dies sagt Nushell zwei Dinge:
27+
Die Form des Arguments um den Typ überprüfen zu können, sowie die Vervollständigung, falls der Benutzer diese an der Stelle verwenden möchte.
28+
29+
Auf der dritten Zeile wird der Name des zu vevollständigenden Befehls `my-command` eingegeben gefolgt von der `<tab>` Taste. Dies führt die Vervollständigung aus. Eigene Vervollständigungen funktionieren identisch zu anderen Vervollständigungen. Wird `a` gefolgt von der `<tab>` Taste gedrückt, wird automatisch "aal" ausgegeben.
30+
31+
32+
## Module und eigene Vervollständigung
33+
34+
Es empfiehlt sich die eigenen Vervollständigungen von der öffentlichen API zu trennen. Dafür bieten sich Module an.
35+
36+
Hier das Beispiel von oben in einem Modul:
37+
38+
```
39+
module commands {
40+
def tiere [] {
41+
["katze", "hund", "aal" ]
42+
}
43+
44+
export def my-command [tier: string@tiere] {
45+
print $tier
46+
}
47+
}
48+
```
49+
50+
In diesem Modul wird nur der Befehl `my-command`, aber nicht die Vervollständigung `tiere` exportiert. Dies erlaubt es den Befehl auszuführen, sowie die Vervollständigung zu verwenden, ohne auf die eigene Vervollständigung Zugriff zu haben.
51+
Dies hält die API sauberer und bietet dennoch alle Funktionen an.
52+
53+
Dies ist möglich, weil die Vervollständigungen mit dem Marker `@` zusammen mit dem Befehl eingeschlossen werden.
54+
55+
## Kontextsensitive eigene Vervollständigungen
56+
57+
Es ist möglich den Kontext einer Vervollständigung mit zu geben. Dies ist nützlich, wenn vorangehende Argumente in die Vervollständigung mit einbezogen werden müssen.
58+
59+
Bezogen auf das obige Beispiel sieht dies so aus:
60+
61+
```
62+
module commands {
63+
def tiere [] {
64+
["katze", "hund", "aal" ]
65+
}
66+
67+
def tier-name [context: string] {
68+
{
69+
katze: ["Missy", "Phoebe"]
70+
hund: ["Lulu", "Enzo"]
71+
aal: ["Eww", "Slippy"]
72+
} | get -i ($context | split words | last)
73+
}
74+
75+
export def my-command [
76+
tier: string@tiere
77+
name: string@tier-name
78+
] {
79+
print $"Als ($tier) heisse ich ($name)."
80+
}
81+
}
82+
```
83+
Der Befehl `tier-name` gibt die entsprechende Liste der Namen zurück. Dies funktioniert, weil der Wert der `$context` Variablen, dem Text entspricht, der bis zu dem Zeitpunkt eingegeben wurde.
84+
85+
```
86+
>| my-command
87+
katze hund aal
88+
>| my-command hund
89+
Lulu Enzo
90+
>my-command hund enzo
91+
Als hund heisse ich Enzo
92+
```
93+
94+
Auf der zweiten Zeile wird, sobald die `<tab>` Taste gedrückt wurde, das Argument `"my-command hund"` dem `tier-namen` Kontext übergeben.
95+
96+
## Eigene Vervollständigungen und [`extern`](/commands/docs/extern.md)
97+
98+
Sehr mächtig ist die Kombination von eigenen Vervollständigungen mit [externen Befehlen](externs.md). Diese funktionieren gleich wie die Vervollständigungen zu eigenen Befehlen:
99+
Erstellen der Vervollständigung und anbinden an ein Positions- oder Markierungs-Argument des `extern` mit dem `@` Zeichen.
100+
101+
In der Default Konfiguration finden sich ebenfalls Vervollständigungen:
102+
103+
```
104+
export extern "git push" [
105+
remote?: string@"nu-complete git remotes", # the name of the remote
106+
refspec?: string@"nu-complete git branches" # the branch / refspec
107+
...
108+
]
109+
```
110+
111+
Die Vervollständigung erfüllt hier die gleiche Rolle wie in den Beispielen zuvor. Es werden zwei verschiedene Vervollständigungen verwendet, abhängig von der Position, die bisher eingegeben wurde.
112+
113+
## Eigene Beschreibungen
114+
115+
Alternativ zu einer Liste von Strings, kann eine Vervollständigung auch einen Record aus einem `value` und einer `description` zurückgeben.
116+
117+
```
118+
def my_commits [] {
119+
[
120+
{ value: "5c2464", description: "Add .gitignore" },
121+
{ value: "f3a377", description: "Initial commit" }
122+
]
123+
}
124+
```
125+
126+
> **Notiz**
127+
>
128+
> Mit dem folgenden Schnippsel:
129+
>
130+
> ```nu
131+
> def my-command [commit: string@my_commits] {
132+
> print $commit
133+
> }
134+
> ```
135+
>
136+
> aufgepasst, auch wenn die Vervollständigung folgendes zeigt
137+
>
138+
> ```nu
139+
> >_ my-command <TAB>
140+
> 5c2464 Add .gitignore
141+
> f3a377 Initial commit
142+
> ```
143+
>
144+
> nur die Werte, hier "5c2464" und "f3a377", werden in Befehls Argumenten verwendet!
145+
146+
## Extere Vervollständigungen
147+
148+
Externe Vervollständigungen können ebenfalls integriert werden, anstatt derer von Nushell.
149+
150+
Dafür muss dem Feld `external_completer` in `config.nu` eine [closure](/book/types_of_data.md#closures)) übergeben werden, welche ausgewertet wird, wenn keine Nushell Vervollständigungen gefunden werden.
151+
152+
```nu
153+
> $env.config.completions.external = {
154+
> enable: true
155+
> max_results: 100
156+
> completer: $completer
157+
> }
158+
```
159+
160+
Die Closure kann konfiguriert werden, einen externen Vervollständiger wie [carapace](https://github.com/rsteube/carapace-bin) zu verwenden.
161+
162+
Wenn die Closure einen nicht lesbaren Wert (z.B. einen leeren String) zurückgibt, fällt Nushell auf die Datei Vervollständigung zurück.
163+
164+
Ein externer Vervollständiger ist eine Funktion, die den aktuellen Befehl als String Liste entgegennimmt, und eine Liste von Records mit `value` und `description` zurückgibt. Wie bei eigenen Nushell Vervollständigungen.
165+
166+
> **Notiz**
167+
> Diese Closure nimmt den aktuellen Befehl als Liste entgegen. Zum Beispiel, wird `my-command --arg1 <tab>` als Vervollständigung `[my-command --arg1 " "]` erhalten.
168+
169+
Dieses Beispiel wird die externe Vervollständigung für carapace erstellen:
170+
171+
```nu
172+
let carapace_completer = {|spans|
173+
carapace $spans.0 nushell $spans | from json
174+
}
175+
```
176+
177+
[Mehr Beispiele für eigene Vervollständigungen können im Kochbuch gefunden werden](../cookbook/external_completers.md).

i18n-meta.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
"name": "custom_completions.md",
134134
"en": "Completed",
135135
"zh-CN": "f5987a82d@hustcer",
136-
"de": "-",
136+
"de": "5993a92b@petrisch",
137137
"tr": "-",
138138
"ja": "-",
139139
"es": "-",

0 commit comments

Comments
 (0)