summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--bash.html.markdown208
-rw-r--r--cobol.html.markdown2
-rw-r--r--de-de/vim-de.html.markdown308
-rw-r--r--fr-fr/javascript-fr.html.markdown2
-rw-r--r--fr-fr/set-theory-fr.html.markdown2
-rw-r--r--hy.html.markdown3
-rw-r--r--ldpl.html.markdown7
-rw-r--r--markdown.html.markdown13
-rw-r--r--python.html.markdown95
-rw-r--r--rdf.html.markdown2
-rw-r--r--vim.html.markdown2
11 files changed, 320 insertions, 324 deletions
diff --git a/bash.html.markdown b/bash.html.markdown
index c9a805ba..e0e4f88a 100644
--- a/bash.html.markdown
+++ b/bash.html.markdown
@@ -18,6 +18,7 @@ contributors:
- ["Harry Mumford-Turner", "https://github.com/harrymt"]
- ["Martin Nicholson", "https://github.com/mn113"]
- ["Mark Grimwood", "https://github.com/MarkGrimwood"]
+ - ["Emily Grace Seville", "https://github.com/EmilySeville7cfg"]
filename: LearnBash.sh
translators:
- ["Dimitri Kokkonis", "https://github.com/kokkonisd"]
@@ -37,104 +38,107 @@ or executed directly in the shell.
# As you already figured, comments start with #. Shebang is also a comment.
# Simple hello world example:
-echo Hello world! # => Hello world!
+echo "Hello world!" # => Hello world!
# Each command starts on a new line, or after a semicolon:
-echo 'This is the first line'; echo 'This is the second line'
-# => This is the first line
-# => This is the second line
+echo "This is the first command"; echo "This is the second command"
+# => This is the first command
+# => This is the second command
# Declaring a variable looks like this:
-Variable="Some string"
+variable="Some string"
# But not like this:
-Variable = "Some string" # => returns error "Variable: command not found"
-# Bash will decide that Variable is a command it must execute and give an error
+variable = "Some string" # => returns error "variable: command not found"
+# Bash will decide that `variable` is a command it must execute and give an error
# because it can't be found.
# Nor like this:
-Variable= 'Some string' # => returns error: "Some string: command not found"
-# Bash will decide that 'Some string' is a command it must execute and give an
-# error because it can't be found. (In this case the 'Variable=' part is seen
-# as a variable assignment valid only for the scope of the 'Some string'
-# command.)
+variable= "Some string" # => returns error: "Some string: command not found"
+# Bash will decide that "Some string" is a command it must execute and give an
+# error because it can't be found. In this case the "variable=" part is seen
+# as a variable assignment valid only for the scope of the "Some string"
+# command.
# Using the variable:
-echo $Variable # => Some string
-echo "$Variable" # => Some string
-echo '$Variable' # => $Variable
-# When you use the variable itself — assign it, export it, or else — you write
+echo "$variable" # => Some string
+echo '$variable' # => $variable
+# When you use a variable itself — assign it, export it, or else — you write
# its name without $. If you want to use the variable's value, you should use $.
# Note that ' (single quote) won't expand the variables!
-
-# Parameter expansion ${ }:
-echo ${Variable} # => Some string
-# This is a simple usage of parameter expansion
-# Parameter Expansion gets a value from a variable.
-# It "expands" or prints the value
-# During the expansion time the value or parameter can be modified
-# Below are other modifications that add onto this expansion
-
-# String substitution in variables
-echo ${Variable/Some/A} # => A string
-# This will substitute the first occurrence of "Some" with "A"
-
-# Substring from a variable
-Length=7
-echo ${Variable:0:Length} # => Some st
+# You can write variable without surrounding quotes but it's not recommended.
+
+# Parameter expansion ${...}:
+echo "${variable}" # => Some string
+# This is a simple usage of parameter expansion such as two examples above.
+# Parameter expansion gets a value from a variable.
+# It "expands" or prints the value.
+# During the expansion time the value or parameter can be modified.
+# Below are other modifications that add onto this expansion.
+
+# String substitution in variables:
+echo "${variable/Some/A}" # => A string
+# This will substitute the first occurrence of "Some" with "A".
+
+# Substring from a variable:
+length=7
+echo "${variable:0:length}" # => Some st
# This will return only the first 7 characters of the value
-echo ${Variable: -5} # => tring
-# This will return the last 5 characters (note the space before -5)
+echo "${variable: -5}" # => tring
+# This will return the last 5 characters (note the space before -5).
+# The space before minus is mandatory here.
-# String length
-echo ${#Variable} # => 11
+# String length:
+echo "${#variable}" # => 11
-# Indirect expansion
-OtherVariable="Variable"
-echo ${!OtherVariable} # => Some String
-# This will expand the value of OtherVariable
+# Indirect expansion:
+other_variable="variable"
+echo ${!other_variable} # => Some string
+# This will expand the value of `other_variable`.
-# Default value for variable
-echo ${Foo:-"DefaultValueIfFooIsMissingOrEmpty"}
+# The default value for variable:
+echo "${foo:-"DefaultValueIfFooIsMissingOrEmpty"}"
# => DefaultValueIfFooIsMissingOrEmpty
-# This works for null (Foo=) and empty string (Foo=""); zero (Foo=0) returns 0.
+# This works for null (foo=) and empty string (foo=""); zero (foo=0) returns 0.
# Note that it only returns default value and doesn't change variable value.
-# Declare an array with 6 elements
-array0=(one two three four five six)
-# Print first element
-echo $array0 # => "one"
-# Print first element
-echo ${array0[0]} # => "one"
-# Print all elements
-echo ${array0[@]} # => "one two three four five six"
-# Print number of elements
-echo ${#array0[@]} # => "6"
-# Print number of characters in third element
-echo ${#array0[2]} # => "5"
-# Print 2 elements starting from fourth
-echo ${array0[@]:3:2} # => "four five"
-# Print all elements. Each of them on new line.
-for i in "${array0[@]}"; do
- echo "$i"
+# Declare an array with 6 elements:
+array=(one two three four five six)
+# Print the first element:
+echo "${array[0]}" # => "one"
+# Print all elements:
+echo "${array[@]}" # => "one two three four five six"
+# Print the number of elements:
+echo "${#array[@]}" # => "6"
+# Print the number of characters in third element
+echo "${#array[2]}" # => "5"
+# Print 2 elements starting from fourth:
+echo "${array[@]:3:2}" # => "four five"
+# Print all elements each of them on new line.
+for item in "${array[@]}"; do
+ echo "$item"
done
-# Brace Expansion { }
-# Used to generate arbitrary strings
-echo {1..10} # => 1 2 3 4 5 6 7 8 9 10
-echo {a..z} # => a b c d e f g h i j k l m n o p q r s t u v w x y z
-# This will output the range from the start value to the end value
-
# Built-in variables:
-# There are some useful built-in variables, like
+# There are some useful built-in variables, like:
echo "Last program's return value: $?"
echo "Script's PID: $$"
echo "Number of arguments passed to script: $#"
echo "All arguments passed to script: $@"
echo "Script's arguments separated into different variables: $1 $2..."
+# Brace Expansion {...}
+# used to generate arbitrary strings:
+echo {1..10} # => 1 2 3 4 5 6 7 8 9 10
+echo {a..z} # => a b c d e f g h i j k l m n o p q r s t u v w x y z
+# This will output the range from the start value to the end value.
+# Note that you can't use variables here:
+from=1
+to=10
+echo {$from..$to} # => {$from..$to}
+
# Now that we know how to echo and use variables,
-# let's learn some of the other basics of bash!
+# let's learn some of the other basics of Bash!
# Our current directory is available through the command `pwd`.
# `pwd` stands for "print working directory".
@@ -144,33 +148,46 @@ echo "I'm in $(pwd)" # execs `pwd` and interpolates output
echo "I'm in $PWD" # interpolates the variable
# If you get too much output in your terminal, or from a script, the command
-# `clear` clears your screen
+# `clear` clears your screen:
clear
-# Ctrl-L also works for clearing output
+# Ctrl-L also works for clearing output.
# Reading a value from input:
echo "What's your name?"
-read Name # Note that we didn't need to declare a new variable
-echo Hello, $Name!
+read name
+# Note that we didn't need to declare a new variable.
+echo "Hello, $name!"
-# We have the usual if structure:
-# use `man test` for more info about conditionals
-if [ $Name != $USER ]
-then
+# We have the usual if structure.
+# Condition is true if the value of $name is not equal to the current user's login username:
+if [[ "$name" != "$USER" ]]; then
echo "Your name isn't your username"
else
echo "Your name is your username"
fi
-# True if the value of $Name is not equal to the current user's login username
-# NOTE: if $Name is empty, bash sees the above condition as:
-if [ != $USER ]
-# which is invalid syntax
-# so the "safe" way to use potentially empty variables in bash is:
-if [ "$Name" != $USER ] ...
-# which, when $Name is empty, is seen by bash as:
-if [ "" != $USER ] ...
-# which works as expected
+# To use && and || with if statements, you need multiple pairs of square brackets:
+read age
+if [[ "$name" == "Steve" ]] && [[ "$age" -eq 15 ]]; then
+ echo "This will run if $name is Steve AND $age is 15."
+fi
+
+if [[ "$name" == "Daniya" ]] || [[ "$name" == "Zach" ]]; then
+ echo "This will run if $name is Daniya OR Zach."
+fi
+# There are other comparison operators for numbers listed below:
+# -ne - not equal
+# -lt - less than
+# -gt - greater than
+# -le - less than or equal to
+# -ge - greater than or equal to
+
+# There is also the `=~` operator, which tests a string against the Regex pattern:
+email=me@example.com
+if [[ "$email" =~ [a-z]+@[a-z]{2,}\.(com|net|org) ]]
+then
+ echo "Valid email!"
+fi
# There is also conditional execution
echo "Always executed" || echo "Only executed if first command fails"
@@ -193,27 +210,6 @@ bg
kill %2
# %1, %2, etc. can be used for fg and bg as well
-# To use && and || with if statements, you need multiple pairs of square brackets:
-if [ "$Name" == "Steve" ] && [ "$Age" -eq 15 ]
-then
- echo "This will run if $Name is Steve AND $Age is 15."
-fi
-
-if [ "$Name" == "Daniya" ] || [ "$Name" == "Zach" ]
-then
- echo "This will run if $Name is Daniya OR Zach."
-fi
-
-# There is also the `=~` operator, which tests a string against a Regex pattern:
-Email=me@example.com
-if [[ "$Email" =~ [a-z]+@[a-z]{2,}\.(com|net|org) ]]
-then
- echo "Valid email!"
-fi
-# Note that =~ only works within double [[ ]] square brackets,
-# which are subtly different from single [ ].
-# See https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs for more on this.
-
# Redefine command `ping` as alias to send only 5 packets
alias ping='ping -c 5'
# Escape the alias and use command with this name instead
diff --git a/cobol.html.markdown b/cobol.html.markdown
index 1c858396..1350c66f 100644
--- a/cobol.html.markdown
+++ b/cobol.html.markdown
@@ -132,7 +132,7 @@ organizations.
*Now it is time to learn about two related COBOL verbs: string and unstring.
- *The string verb is used to concatenate, or put together, two or more stings.
+ *The string verb is used to concatenate, or put together, two or more strings.
*Unstring is used, not surprisingly, to separate a
*string into two or more smaller strings.
*It is important that you remember to use ‘delimited by’ when you
diff --git a/de-de/vim-de.html.markdown b/de-de/vim-de.html.markdown
index 93fd9773..d0b4eb9d 100644
--- a/de-de/vim-de.html.markdown
+++ b/de-de/vim-de.html.markdown
@@ -3,94 +3,92 @@ category: tool
tool: vim
lang: de-de
contributors:
- - ["RadhikaG", "https://github.com/RadhikaG"]
+- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- - ["caminsha", "https://github.com/caminsha"]
+- ["caminsha", "https://github.com/caminsha"]
filename: LearnVim-de.txt
---
-
[Vim](http://www.vim.org)
(Vi IMproved) ist ein Klon von vi, dem bekannten Editor für Unix. Es ist ein
-Texteditor, welcher mit Fokus auf Geschwindigkeit und Prouktivität entwickelt
-wurde.
-Vim hat viele Keybindings für ein schnelles navigieren und schnelles bearbeiten
-einer Datei.
+Texteditor, welcher mit Fokus auf Geschwindigkeit und Produktivität entwickelt
+wurde. Vim hat viele Keybindings für ein schnelles navigieren und schnelles
+bearbeiten einer Datei.
## Grundlagen, um in Vim zu navigieren
```
- vim <filename> # Öffne <filename> in Vim
- :help <topic> # Öffne die eingebaute Hilfe zum Thema <topic>, wenn
- # es existiert
- :q # Schließe vim
- :w # Speichere diese Datei
- :wq # Speichere diese Datei und schließe vim
- ZZ # Speichere diese Datei und schließe vim
- :q! # Schließe vim ohne die Datei zu speichern
- # ! *zwingt* die Ausführung von :q,
- # daher wird die Datei nicht gespeichert.
- ZQ # Beende vim ohne die Datei zu speichern
- :x # Speichere die Datei und beende vim
- # Dies ist eine kürzere Version von :wq
-
- u # Änderung rückgängig machen
- CTRL+R # Änderung wiederherstellen
-
- h # Den Cursor um ein Zeichen nach links bewegen
- j # Den Cursor eine Zeile nach unten bewegen
- k # Den Cursor eine Zeile nach oben bewegen
- l # Den Cursor um ein Zeichen nach rechts bewegen
-
- Ctrl+B # Gehe eine Bildschirmanzeige zurück
- Ctrl+F # Gehe eine Bildschirmanzeige vorwärts
- Ctrl+D # Gehe eine halbe Bildschirmanzeige vorwärts
- Ctrl+U # Gehe eine halbe Bildschirmanzeige zurück
-
- # Navigieren innerhalb einer Zeile
-
- 0 # Navigiere zum Anfang der Zeile
- $ # Navigiere zum Ende der Zeile
- ^ # Navigiere zum ersten Zeichen, welches kein Leerzeichen ist
-
- # Im Text suchen
-
- /word # Hebt alle Ergebnisse nach dem Cursor hervor
- ?word # Hebt alle Ergebnisse vor dem Cursor hervor
- n # Bewegt den Cursor zum nächsten Ergebnis nach der Suche
- N # Bewegt den Cursor zum vorherigen Ergebnis der Suche
-
- :%s/foo/bar/g # Ersetze "foo" durch "bar" in allen Zeilen
- :s/foo/bar/g # Ersetze "foo" durch "bar" in der aktuellen Zeile
- :%s/\n/\r/g # Ersetze das newline-Zeichen bei allen Zeilen durch
- # ein carriage return
-
- # Zu einzelnen Zeichen springen
-
- f<character> # Springe vorwärts und auf dem Zeichen <character>
- t<character> # Springe vorwärts und lande vor dem Zeichen <character>
-
- # Zum Beispiel,
- f< # Springe vorwärts und lande auf <
- t< # Springe vorwärts und lande vor <
-
- # Wortweise navigieren
-
- w # Springe um ein Wort vorwärts
- b # Gehe ein Wort zurück
- e # Springe zum Ende des aktuellen Wortes
-
- # Weitere Befehle, um zu navigieren
-
- gg # Gehe an den Start der Datei
- G # Gehe an das Ende der Datei
- :NUM # Springe zur Zeile NUM (NUM kann eine beliebige Zahl sein)
- H # Navigiere zum Start der aktuellen Bildschirmanzeige
- M # Navigiere in die Mitte der aktuellen Bildschirmanzeige
- L # Navigiere an das Ende der aktuellen Bildschirmanzeige
+vim <filename> # Öffne <filename> in Vim
+:help <topic> # Öffne die eingebaute Hilfe zum Thema <topic>, wenn
+ # es existiert
+:q # Schließe vim
+:w # Speichere diese Datei
+:wq # Speichere diese Datei und schließe vim
+ZZ # Speichere diese Datei und schließe vim
+:q! # Schließe vim ohne die Datei zu speichern
+ # ! *zwingt* die Ausführung von :q,
+ # daher wird die Datei nicht gespeichert.
+ZQ # Beende vim ohne die Datei zu speichern
+:x # Speichere die Datei und beende vim
+ # Dies ist eine kürzere Version von :wq
+
+u # Änderung rückgängig machen
+CTRL+R # Änderung wiederherstellen
+
+h # Den Cursor um ein Zeichen nach links bewegen
+j # Den Cursor eine Zeile nach unten bewegen
+k # Den Cursor eine Zeile nach oben bewegen
+l # Den Cursor um ein Zeichen nach rechts bewegen
+
+Ctrl+B # Gehe eine Bildschirmanzeige zurück
+Ctrl+F # Gehe eine Bildschirmanzeige vorwärts
+Ctrl+D # Gehe eine halbe Bildschirmanzeige vorwärts
+Ctrl+U # Gehe eine halbe Bildschirmanzeige zurück
+
+# Navigieren innerhalb einer Zeile
+
+0 # Navigiere zum Anfang der Zeile
+$ # Navigiere zum Ende der Zeile
+^ # Navigiere zum ersten Zeichen, welches kein Leerzeichen ist
+
+# Im Text suchen
+
+/word # Hebt alle Ergebnisse nach dem Cursor hervor
+?word # Hebt alle Ergebnisse vor dem Cursor hervor
+n # Bewegt den Cursor zum nächsten Ergebnis nach der Suche
+N # Bewegt den Cursor zum vorherigen Ergebnis der Suche
+
+:%s/foo/bar/g # Ersetze "foo" durch "bar" in allen Zeilen
+:s/foo/bar/g # Ersetze "foo" durch "bar" in der aktuellen Zeile
+:%s/\n/\r/g # Ersetze das newline-Zeichen bei allen Zeilen durch
+ # ein carriage return
+
+# Zu einzelnen Zeichen springen
+
+f<character> # Springe vorwärts und auf dem Zeichen <character>
+t<character> # Springe vorwärts und lande vor dem Zeichen <character>
+
+# Zum Beispiel,
+f< # Springe vorwärts und lande auf <
+t< # Springe vorwärts und lande vor <
+
+# Wortweise navigieren
+
+w # Springe um ein Wort vorwärts
+b # Gehe ein Wort zurück
+e # Springe zum Ende des aktuellen Wortes
+
+# Weitere Befehle, um zu navigieren
+
+gg # Gehe an den Start der Datei
+G # Gehe an das Ende der Datei
+:NUM # Springe zur Zeile NUM (NUM kann eine beliebige Zahl sein)
+H # Navigiere zum Start der aktuellen Bildschirmanzeige
+M # Navigiere in die Mitte der aktuellen Bildschirmanzeige
+L # Navigiere an das Ende der aktuellen Bildschirmanzeige
```
-## Hilfsdokumente:
+## Hilfsdokumente
Vim hat eine eingebaute Dokumentation, welche mit `:help <topic>` aufgerufen
werden kann.
@@ -98,34 +96,33 @@ Zum Beispiel öffnet `:help navigation` die Dokumentation über das Navigieren
`:help` kann auch ohne ein Argument verwendet werden. Dies zeigt den Standard-
Hilfsdialog an, welcher den Start mit vim einfacher macht.
-that aims to make getting started with vim more approachable!
-## Modi:
+## Modi
Vim basiert auf dem Konzept von **modes**.
-- Command Mode - Vim startet in diesem Modus, hier kann man navigieren und Befehle eingeben
+- Command Mode - Vims erster Modus, hier kann man navigieren und Befehle eingeben
- Insert Mode - Wird verwendet, um Änderungen in der Datei zu machen.
-- Visual Mode - Wird verwendet, um Text zu markieren und Operationen durchzuführen
+- Visual Mode - Wird verwendet, um Text zu markieren und diesen zu verändern
- Ex Mode - Wird verwendet, um im ':'-Prompt Befehle einzugeben
```
- i # Führt vim in den Insert Mode, vor der Cursorposition
- a # Führt vim in den Insert Mode, nach der Cursorposition
- v # Führt vim in den Visual Mode
- : # Führt vim in den Ex Mode
- <esc> # Führt zurück in den Command Mode, egal in welchem Mode
- # man sich gerade befindet.
-
- # Kopieren und einfügen von Text
-
- y # Kopiere alles, was im Moment ausgewählt ist
- yy # Kopiert die aktuelle Zeile
- d # Löscht alles, was im Moment ausgewählt ist
- dd # Löscht die aktuelle Zeile
- p # Fügt den kopierten Text nach dem Cursor ein
- P # Fügt den kopierten Text vor dem Cursor ein
- x # Löscht das Zeichen unter dem Cursor
+i # Führt vim in den Insert Mode, vor der Cursorposition
+a # Führt vim in den Insert Mode, nach der Cursorposition
+v # Führt vim in den Visual Mode
+: # Führt vim in den Ex Mode
+<esc> # Führt zurück in den Command Mode, egal in welchem Mode
+ # man sich gerade befindet.
+
+# Kopieren und einfügen von Text
+
+y # Kopiere alles, was im Moment ausgewählt ist
+yy # Kopiert die aktuelle Zeile
+d # Löscht alles, was im Moment ausgewählt ist
+dd # Löscht die aktuelle Zeile
+p # Fügt den kopierten Text nach dem Cursor ein
+P # Fügt den kopierten Text vor dem Cursor ein
+x # Löscht das Zeichen unter dem Cursor
```
## Die 'Grammatik' von Vim
@@ -140,68 +137,67 @@ Vim kann als Satz von Kommandos angesehen werden, welche im Format
Einige wichtige Beispiele von 'Verb', 'Modifier' und 'Nouns':
```
- # 'Verb'
-
- d # löschen
- c # ändern
- y # kopieren
- v # visuelles auswählen
-
- # 'Modifiers'
-
- i # innerhalb
- a # außerhalb
- NUM # Nummer (NUM kann irgendeine Zahl sein)
- f # Sucht nach etwas und landet darauf
- t # Sucht nach etwas und stoppt davor
- / # Suche eine Zeichenfolge ab dem Cursor
- ? # Suche eine Zeichenfolge vor dem Cursor
-
- # 'Nouns'
-
- w # Wort
- s # Satz
- p # Abschnitt
- b # Block
-
- # Beispielsätze resp. Kommandos
-
- d2w # lösche zwei Wörter
- cis # Ändere innerhalb des Satzes.
- yip # Kopiere innerhalb des Abschnitts (kopiere den Abschnitt,
- # in welchem du bist)
- ct< # Ändere bis zur spitzen Klammer
- # Ändere den Text von deiner aktuellen Cursorposition bis
- # zur nächsten spitzen Klammer
- d$ # Lösche bis zum Ende der Zeile
+# 'Verb'
+
+d # löschen
+c # ändern
+y # kopieren
+v # visuelles auswählen
+
+# 'Modifiers'
+
+i # innerhalb
+a # außerhalb
+NUM # Nummer (NUM kann irgendeine Zahl sein)
+f # Sucht nach etwas und landet darauf
+t # Sucht nach etwas und stoppt davor
+/ # Suche eine Zeichenfolge ab dem Cursor
+? # Suche eine Zeichenfolge vor dem Cursor
+
+# 'Nouns'
+
+w # Wort
+s # Satz
+p # Abschnitt
+b # Block
+
+# Beispielsätze resp. Kommandos
+
+d2w # lösche zwei Wörter
+cis # Ändere innerhalb des Satzes.
+yip # Kopiere innerhalb des Abschnitts (kopiere den Abschnitt,
+ # in welchem du bist)
+ct< # Ändere bis zur spitzen Klammer
+ # Ändere den Text von deiner aktuellen Cursorposition bis
+ # zur nächsten spitzen Klammer
+d$ # Lösche bis zum Ende der Zeile
```
## Einige Shortcuts und Tricks
```
- > # Rücke die Auswahl um einen Block ein
- < # Lösche eine Einrückung der Auswahl
- :earlier 15m # Stellt das Dokument so wieder her, wie es vor 15
- # Minuten war
- :later 15m # den oberen Befehl rückgängig machen
- ddp # Vertauschen zweier aufeinanderfolgenden Zeilen
- # Zuerst dd, dann p
- . # Wiederhole die vorherige Aktion
- :w !sudo tee % # Speichere die Datei als Root
- :set syntax=c # Stelle das Syntax-Highlighting für 'C' ein
- :sort # Alle Zeilen sortieren
- :sort! # Alle Zeilen rückwärts sortieren
- :sort u # Alle Zeilen sortieren und Duplikate entfernen
- ~ # Umschalten der Groß-/Kleinschreibung des ausgewählten Textes
- u # Ausgewählten Text zu Kleinschreibung ändern
- U # Ausgewählten Text zu Großschreibung ändern
-
- # Text-Folding (Textfaltung)
- zf # Erstelle eine Faltung des ausgewählten Textes
- zo # Öffne die aktuelle Faltung
- zc # Schließe die aktuelle Faltung
- zR # Öffne alle Faltungen
- zM # Schließe alle Faltungen
+> # Rücke die Auswahl um einen Block ein
+< # Lösche eine Einrückung der Auswahl
+:earlier 15m # Stellt das Dokument so wieder her, wie es vor 15 Minuten war
+:later 15m # den oberen Befehl rückgängig machen
+ddp # Vertauschen zweier aufeinanderfolgenden Zeilen
+ # Zuerst dd, dann p
+. # Wiederhole die vorherige Aktion
+:w !sudo tee % # Speichere die Datei als Root
+:set syntax=c # Stelle das Syntax-Highlighting für 'C' ein
+:sort # Alle Zeilen sortieren
+:sort! # Alle Zeilen rückwärts sortieren
+:sort u # Alle Zeilen sortieren und Duplikate entfernen
+~ # Umschalten der Groß-/Kleinschreibung des ausgewählten Textes
+u # Ausgewählten Text zu Kleinschreibung ändern
+U # Ausgewählten Text zu Großschreibung ändern
+
+# Text-Folding (Textfaltung)
+zf # Erstelle eine Faltung des ausgewählten Textes
+zo # Öffne die aktuelle Faltung
+zc # Schließe die aktuelle Faltung
+zR # Öffne alle Faltungen
+zM # Schließe alle Faltungen
```
## Makros
@@ -212,9 +208,9 @@ Kommandos, welche du braucht, aufgenommen bis die Aufnahme gestoppt wird.
Wenn du ein Makro ausführst, werden exakt die gleichen Schritte gemacht.
```
- qa # Starte das Aufnehmen des Makros 'a'
- q # Beende das Aufnehmen
- @a # Führe das Makro 'a' aus
+qa # Starte das Aufnehmen des Makros 'a'
+q # Beende das Aufnehmen
+@a # Führe das Makro 'a' aus
```
### Konfigurieren mit ~/.vimrc
diff --git a/fr-fr/javascript-fr.html.markdown b/fr-fr/javascript-fr.html.markdown
index 186859ab..308f1ca8 100644
--- a/fr-fr/javascript-fr.html.markdown
+++ b/fr-fr/javascript-fr.html.markdown
@@ -94,7 +94,7 @@ let banta = "Harry", santa = "Hermione";
// L'égalité est === ou ==
// === compare la valeur exacte 2 === '2' // = false
-// == convertit la valeur pour comparer 2 === '2' // = true
+// == convertit la valeur pour comparer 2 == '2' // = true
// En général, il vaut mieux utiliser === pour ne pas faire d'erreur.
1 === 1; // = true
2 === 1; // = false
diff --git a/fr-fr/set-theory-fr.html.markdown b/fr-fr/set-theory-fr.html.markdown
index 543bd98b..d1ac2711 100644
--- a/fr-fr/set-theory-fr.html.markdown
+++ b/fr-fr/set-theory-fr.html.markdown
@@ -125,7 +125,7 @@ A △ B = (A \ B) ∪ (B \ A)
```
### Produit cartésien
-Le produit cartésien de deux ensembles `A` et `B` est l'ensemble contenant tous les couples dont la première élément appartient à `A` et la deuxième à `B`.
+Le produit cartésien de deux ensembles `A` et `B` est l'ensemble contenant tous les couples dont le premier élément appartient à `A` et le deuxième à `B`.
```
A × B = { (x, y) | x ∈ A, y ∈ B }
diff --git a/hy.html.markdown b/hy.html.markdown
index 1287095f..f6bdead0 100644
--- a/hy.html.markdown
+++ b/hy.html.markdown
@@ -13,8 +13,7 @@ hy to call native python code or python to call native hy code as well
This tutorial works for hy ≥ 0.9.12, with some corrections for hy 0.11.
```clojure
-;; this gives an gentle introduction to hy for a quick trial head to
-;; http://try-hy.appspot.com
+;; this gives an gentle introduction to hy
;;
; Semicolon comments, like other LISPS
diff --git a/ldpl.html.markdown b/ldpl.html.markdown
index 86603d94..449c8670 100644
--- a/ldpl.html.markdown
+++ b/ldpl.html.markdown
@@ -3,6 +3,7 @@ language: LDPL
filename: learnLDPL.ldpl
contributors:
- ["Martín del Río", "https://github.com/lartu"]
+ - ["John Paul Wohlscheid", "https://github.com/JohnBlood"]
---
**LDPL** is a powerful, C++ transpiled, open-source programming language designed
@@ -68,7 +69,7 @@ else if myMap:"someIndex" is not equal to 45 then
else
display "Else!" crlf
end if
-# Valid LDPL comparisson operators are
+# Valid LDPL comparison operators are
# - IS EQUAL TO
# - IS NOT EQUAL TO
# - IS LESS THAN
@@ -123,8 +124,8 @@ get random in myNumber # get a random number between 0 and 1
# files, are divided in sections. The sections found in sub-procedures are
# the PARAMETERS section, the LOCAL DATA section and the PROCEDURE section.
# All sections except the PROCEDURE section can be skipped if they aren't
-# used. If no PARAMTERS nor LOCAL DATA sections are used, the PROCEDURE
-# keyword may be omited.
+# used. If no PARAMETERS nor LOCAL DATA sections are used, the PROCEDURE
+# keyword may be omitted.
sub myFunction
parameters:
a is number # LDPL is pass by reference
diff --git a/markdown.html.markdown b/markdown.html.markdown
index a6000910..cfc0ddf3 100644
--- a/markdown.html.markdown
+++ b/markdown.html.markdown
@@ -40,9 +40,9 @@ specific to a certain parser.
Markdown is a superset of HTML, so any HTML file is valid Markdown.
```md
-<!--This means we can use HTML elements in Markdown, such as the comment
-element, and they won't be affected by a markdown parser. However, if you
-create an HTML element in your markdown file, you cannot use markdown syntax
+<!--This means we can use HTML elements in Markdown, such as the comment
+element, and they won't be affected by a markdown parser. However, if you
+create an HTML element in your markdown file, you cannot use markdown syntax
within that element's contents.-->
```
@@ -370,9 +370,10 @@ Ugh this is so ugly | make it | stop
## Markdownlint
In order to simplify work with Markdown and to unify its coding style,
-`Markdownlint` has been created. This tool is available also as a plugin for
-some IDEs and can be used as an utility to ensure validity and readability of
-Markdown.
+`Markdownlint` has been created. Available as a
+[separate tool](https://github.com/markdownlint/markdownlint)
+as well as a plugin for some IDEs, it can be used to ensure validity and
+readability of Markdown.
---
diff --git a/python.html.markdown b/python.html.markdown
index 0b115c4e..2247f263 100644
--- a/python.html.markdown
+++ b/python.html.markdown
@@ -9,14 +9,17 @@ contributors:
- ["Rommel Martinez", "https://ebzzry.io"]
- ["Roberto Fernandez Diaz", "https://github.com/robertofd1995"]
- ["caminsha", "https://github.com/caminsha"]
+ - ["Stanislav Modrak", "https://stanislav.gq"]
filename: learnpython.py
---
-Python was created by Guido van Rossum in the early 90s. It is now one of the most popular
-languages in existence. I fell in love with Python for its syntactic clarity. It's basically
-executable pseudocode.
+Python was created by Guido van Rossum in the early 90s. It is now one of the
+most popular languages in existence. I fell in love with Python for its
+syntactic clarity. It's basically executable pseudocode.
-Note: This article applies to Python 3 specifically. Check out [here](http://learnxinyminutes.com/docs/pythonlegacy/) if you want to learn the old Python 2.7
+Note: This article applies to Python 3 specifically. Check out
+[here](http://learnxinyminutes.com/docs/pythonlegacy/) if you want to learn the
+old Python 2.7
```python
@@ -96,8 +99,9 @@ bool(set()) # => False
bool(4) # => True
bool(-6) # => True
-# Using boolean logical operators on ints casts them to booleans for evaluation, but their non-cast value is returned
-# Don't mix up with bool(ints) and bitwise and/or (&,|)
+# Using boolean logical operators on ints casts them to booleans for evaluation,
+# but their non-cast value is returned. Don't mix up with bool(ints) and bitwise
+# and/or (&,|)
bool(0) # => False
bool(2) # => True
0 and 2 # => 0
@@ -151,10 +155,10 @@ b == a # => True, a's and b's objects are equal
# You can find the length of a string
len("This is a string") # => 16
-# You can also format using f-strings or formatted string literals (in Python 3.6+)
+# Since Python 3.6, you can use f-strings or formatted string literals.
name = "Reiko"
f"She said her name is {name}." # => "She said her name is Reiko"
-# You can basically put any Python expression inside the braces and it will be output in the string.
+# Any valid Python expression inside these braces is returned to the string.
f"{name} is {len(name)} characters long." # => "Reiko is 5 characters long."
# None is an object
@@ -165,15 +169,6 @@ None # => None
"etc" is None # => False
None is None # => True
-# None, 0, and empty strings/lists/dicts/tuples/sets all evaluate to False.
-# All other values are True
-bool(0) # => False
-bool("") # => False
-bool([]) # => False
-bool({}) # => False
-bool(()) # => False
-bool(set()) # => False
-
####################################################
## 2. Variables and Collections
####################################################
@@ -302,7 +297,7 @@ filled_dict = {"one": 1, "two": 2, "three": 3}
# Note keys for dictionaries have to be immutable types. This is to ensure that
# the key can be converted to a constant hash value for quick look-ups.
# Immutable types include ints, floats, strings, tuples.
-invalid_dict = {[1,2,3]: "123"} # => Raises a TypeError: unhashable type: 'list'
+invalid_dict = {[1,2,3]: "123"} # => Yield a TypeError: unhashable type: 'list'
valid_dict = {(1,2,3):[1,2,3]} # Values can be of any type, however.
# Look up values with []
@@ -356,7 +351,7 @@ del filled_dict["one"] # Removes the key "one" from filled dict
# Sets store ... well sets
empty_set = set()
-# Initialize a set with a bunch of values. Yeah, it looks a bit like a dict. Sorry.
+# Initialize a set with a bunch of values.
some_set = {1, 1, 2, 2, 3, 4} # some_set is now {1, 2, 3, 4}
# Similar to keys of a dictionary, elements of a set have to be immutable.
@@ -428,7 +423,7 @@ for animal in ["dog", "cat", "mouse"]:
"""
"range(number)" returns an iterable of numbers
-from zero to the given number
+from zero up to (but excluding) the given number
prints:
0
1
@@ -462,8 +457,7 @@ for i in range(4, 8, 2):
print(i)
"""
-To loop over a list, and retrieve both the index and the value of each item in the list
-prints:
+Loop over a list to retrieve both the index and the value of each list item:
0 dog
1 cat
2 mouse
@@ -490,10 +484,11 @@ try:
# Use "raise" to raise an error
raise IndexError("This is an index error")
except IndexError as e:
- pass # Pass is just a no-op. Usually you would do recovery here.
+ pass # Refrain from this, provide a recovery (next example).
except (TypeError, NameError):
- pass # Multiple exceptions can be handled together, if required.
-else: # Optional clause to the try/except block. Must follow all except blocks
+ pass # Multiple exceptions can be processed jointly.
+else: # Optional clause to the try/except block. Must follow
+ # all except blocks.
print("All good!") # Runs only if the code in try raises no exceptions
finally: # Execute under all circumstances
print("We can clean up resources here")
@@ -529,7 +524,8 @@ print(contents)
filled_dict = {"one": 1, "two": 2, "three": 3}
our_iterable = filled_dict.keys()
-print(our_iterable) # => dict_keys(['one', 'two', 'three']). This is an object that implements our Iterable interface.
+print(our_iterable) # => dict_keys(['one', 'two', 'three']). This is an object
+ # that implements our Iterable interface.
# We can loop over it.
for i in our_iterable:
@@ -541,15 +537,16 @@ our_iterable[1] # Raises a TypeError
# An iterable is an object that knows how to create an iterator.
our_iterator = iter(our_iterable)
-# Our iterator is an object that can remember the state as we traverse through it.
-# We get the next object with "next()".
+# Our iterator is an object that can remember the state as we traverse through
+# it. We get the next object with "next()".
next(our_iterator) # => "one"
# It maintains state as we iterate.
next(our_iterator) # => "two"
next(our_iterator) # => "three"
-# After the iterator has returned all of its data, it raises a StopIteration exception
+# After the iterator has returned all of its data, it raises a
+# StopIteration exception
next(our_iterator) # Raises StopIteration
# We can also loop over it, in fact, "for" does this implicitly!
@@ -557,7 +554,7 @@ our_iterator = iter(our_iterable)
for i in our_iterator:
print(i) # Prints one, two, three
-# You can grab all the elements of an iterable or iterator by calling list() on it.
+# You can grab all the elements of an iterable or iterator by call of list().
list(our_iterable) # => Returns ["one", "two", "three"]
list(our_iterator) # => Returns [] because state is saved
@@ -607,9 +604,9 @@ all_the_args(1, 2, a=3, b=4) prints:
# Use * to expand tuples and use ** to expand kwargs.
args = (1, 2, 3, 4)
kwargs = {"a": 3, "b": 4}
-all_the_args(*args) # equivalent to all_the_args(1, 2, 3, 4)
-all_the_args(**kwargs) # equivalent to all_the_args(a=3, b=4)
-all_the_args(*args, **kwargs) # equivalent to all_the_args(1, 2, 3, 4, a=3, b=4)
+all_the_args(*args) # equivalent: all_the_args(1, 2, 3, 4)
+all_the_args(**kwargs) # equivalent: all_the_args(a=3, b=4)
+all_the_args(*args, **kwargs) # equivalent: all_the_args(1, 2, 3, 4, a=3, b=4)
# Returning multiple values (with tuple assignments)
def swap(x, y):
@@ -619,17 +616,19 @@ def swap(x, y):
x = 1
y = 2
x, y = swap(x, y) # => x = 2, y = 1
-# (x, y) = swap(x,y) # Again parenthesis have been excluded but can be included.
+# (x, y) = swap(x,y) # Again the use of parenthesis is optional.
-# Function Scope
+# global scope
x = 5
def set_x(num):
- # Local var x not the same as global variable x
+ # local scope begins here
+ # local var x not the same as global var x
x = num # => 43
print(x) # => 43
def set_global_x(num):
+ # global indicates that particular var lives in the global scope
global x
print(x) # => 5
x = num # global var x is now set to 6
@@ -637,6 +636,12 @@ def set_global_x(num):
set_x(43)
set_global_x(6)
+"""
+prints:
+ 43
+ 5
+ 6
+"""
# Python has first class functions
@@ -659,7 +664,7 @@ list(map(max, [1, 2, 3], [4, 2, 1])) # => [4, 2, 3]
list(filter(lambda x: x > 5, [3, 4, 5, 6, 7])) # => [6, 7]
# We can use list comprehensions for nice maps and filters
-# List comprehension stores the output as a list which can itself be a nested list
+# List comprehension stores the output as a list (which itself may be nested).
[add_10(i) for i in [1, 2, 3]] # => [11, 12, 13]
[x for x in [3, 4, 5, 6, 7] if x > 5] # => [6, 7]
@@ -719,8 +724,8 @@ class Human:
# Note that the double leading and trailing underscores denote objects
# or attributes that are used by Python but that live in user-controlled
# namespaces. Methods(or objects or attributes) like: __init__, __str__,
- # __repr__ etc. are called special methods (or sometimes called dunder methods)
- # You should not invent such names on your own.
+ # __repr__ etc. are called special methods (or sometimes called dunder
+ # methods). You should not invent such names on your own.
def __init__(self, name):
# Assign the argument to the instance's name attribute
self.name = name
@@ -774,7 +779,7 @@ if __name__ == '__main__':
i.say("hi") # "Ian: hi"
j = Human("Joel")
j.say("hello") # "Joel: hello"
- # i and j are instances of type Human, or in other words: they are Human objects
+ # i and j are instances of type Human; i.e., they are Human objects.
# Call our class method
i.say(i.get_species()) # "Ian: H. sapiens"
@@ -811,8 +816,8 @@ if __name__ == '__main__':
# "species", "name", and "age", as well as methods, like "sing" and "grunt"
# from the Human class, but can also have its own unique properties.
-# To take advantage of modularization by file you could place the classes above in their own files,
-# say, human.py
+# To take advantage of modularization by file you could place the classes above
+# in their own files, say, human.py
# To import functions from other files use the following format
# from "filename-without-extension" import "function-or-class"
@@ -936,8 +941,8 @@ class Batman(Superhero, Bat):
# However we are dealing with multiple inheritance here, and super()
# only works with the next base class in the MRO list.
# So instead we explicitly call __init__ for all ancestors.
- # The use of *args and **kwargs allows for a clean way to pass arguments,
- # with each parent "peeling a layer of the onion".
+ # The use of *args and **kwargs allows for a clean way to pass
+ # arguments, with each parent "peeling a layer of the onion".
Superhero.__init__(self, 'anonymous', movie=True,
superpowers=['Wealthy'], *args, **kwargs)
Bat.__init__(self, *args, can_fly=False, **kwargs)
@@ -1036,8 +1041,6 @@ print(say()) # Can you buy me a beer?
print(say(say_please=True)) # Can you buy me a beer? Please! I am poor :(
```
-## Ready For More?
-
### Free Online
* [Automate the Boring Stuff with Python](https://automatetheboringstuff.com)
diff --git a/rdf.html.markdown b/rdf.html.markdown
index 4cb7ddd0..5b2105b8 100644
--- a/rdf.html.markdown
+++ b/rdf.html.markdown
@@ -28,7 +28,7 @@ usually look like URLs but function as identifiers, not locators. The use of
URIs provides context for resource identifiers to make them unambiguous—for
example, to tell a book title from a job title.
-```turtle
+```
# The hash symbol is the comment delimiter.
# Turtle triple statements end with periods like natural language sentences.
diff --git a/vim.html.markdown b/vim.html.markdown
index f5be9b0d..e0fdf2e0 100644
--- a/vim.html.markdown
+++ b/vim.html.markdown
@@ -29,7 +29,7 @@ specific points in the file, and for fast editing.
:q! # Quit vim without saving file
# ! *forces* :q to execute, hence quiting vim without saving
ZQ # Quit vim without saving file
- :x # Save file and quit vim, shorter version of :wq
+ :x # Save file(only when the file is modified) and quit vim
u # Undo
CTRL+R # Redo