diff --git a/.nanorc b/nano/.nanorc
similarity index 100%
rename from .nanorc
rename to nano/.nanorc
diff --git a/.tmux.conf b/tmux/.tmux.conf
similarity index 100%
rename from .tmux.conf
rename to tmux/.tmux.conf
diff --git a/vscode/keybindings.json b/vscode/keybindings.json
new file mode 100644
index 0000000..0842559
--- /dev/null
+++ b/vscode/keybindings.json
@@ -0,0 +1,130 @@
+// Place your key bindings in this file to override the defaultsauto[]
+[
+ {
+ "key": "cmd+d",
+ "command": "-editor.action.addSelectionToNextFindMatch",
+ "when": "editorFocus"
+ },
+ {
+ "key": "cmd+d",
+ "command": "editor.action.copyLinesDownAction",
+ "when": "editorTextFocus && !editorReadonly"
+ },
+ {
+ "key": "shift+alt+down",
+ "command": "-editor.action.copyLinesDownAction",
+ "when": "editorTextFocus && !editorReadonly"
+ },
+ {
+ "key": "ctrl+a shift+7",
+ "command": "workbench.action.splitEditorRight"
+ },
+ {
+ "key": "ctrl+a -",
+ "command": "workbench.action.splitEditorDown"
+ },
+ {
+ "key": "ctrl+a left",
+ "command": "workbench.action.focusLeftGroup"
+ },
+ {
+ "key": "ctrl+a up",
+ "command": "workbench.action.focusAboveGroup"
+ },
+ {
+ "key": "ctrl+a down",
+ "command": "workbench.action.focusBelowGroup"
+ },
+ {
+ "key": "ctrl+a right",
+ "command": "workbench.action.focusRightGroup"
+ },
+ {
+ "key": "cmd+t",
+ "command": "-workbench.action.showAllSymbols"
+ },
+ {
+ "key": "cmd+t",
+ "command": "workbench.action.createTerminalEditor"
+ },
+ {
+ "key": "cmd+u",
+ "command": "-cursorUndo",
+ "when": "textInputFocus"
+ },
+ {
+ "key": "cmd+u",
+ "command": "workbench.action.showAllSymbols"
+ },
+ {
+ "key": "ctrl+a shift+down",
+ "command": "workbench.action.moveActiveEditorGroupDown"
+ },
+ {
+ "key": "cmd+k down",
+ "command": "-workbench.action.moveActiveEditorGroupDown"
+ },
+ {
+ "key": "ctrl+a shift+left",
+ "command": "workbench.action.moveActiveEditorGroupLeft"
+ },
+ {
+ "key": "cmd+k left",
+ "command": "-workbench.action.moveActiveEditorGroupLeft"
+ },
+ {
+ "key": "ctrl+a shift+right",
+ "command": "workbench.action.moveActiveEditorGroupRight"
+ },
+ {
+ "key": "cmd+k right",
+ "command": "-workbench.action.moveActiveEditorGroupRight"
+ },
+ {
+ "key": "ctrl+a shift+up",
+ "command": "workbench.action.moveActiveEditorGroupUp"
+ },
+ {
+ "key": "cmd+k up",
+ "command": "-workbench.action.moveActiveEditorGroupUp"
+ },
+ {
+ "key": "alt+enter",
+ "command": "-notebook.cell.executeAndInsertBelow",
+ "when": "notebookCellListFocused && notebookCellType == 'markup' || notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0 || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelSourceCount > 0"
+ },
+ {
+ "key": "alt+enter",
+ "command": "-debug.openBreakpointToSide",
+ "when": "breakpointsFocused"
+ },
+ {
+ "key": "ctrl+a f",
+ "command": "workbench.files.action.focusFilesExplorer"
+ },
+ {
+ "key": "cmd+n",
+ "command": "explorer.newFile",
+ "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
+ },
+ {
+ "key": "cmd+d",
+ "command": "explorer.newFolder",
+ "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
+ },
+ {
+ "key": "shift+cmd+r",
+ "command": "editor.action.rename",
+ "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
+ },
+ {
+ "key": "f2",
+ "command": "-editor.action.rename",
+ "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
+ },
+ {
+ "key": "shift+cmd+r",
+ "command": "-rerunSearchEditorSearch",
+ "when": "inSearchEditor"
+ }
+]
\ No newline at end of file
diff --git a/vscode/settings.json b/vscode/settings.json
new file mode 100644
index 0000000..9fcacdf
--- /dev/null
+++ b/vscode/settings.json
@@ -0,0 +1,99 @@
+{
+ //
+ // Appearance
+ "workbench.colorTheme": "Monokai Pro (Filter Octagon)",
+ "workbench.iconTheme": "Monokai Pro (Filter Octagon) Icons",
+ "editor.fontFamily": "Fira Code, Menlo, Monaco, 'Courier New', monospace",
+ "editor.fontSize": 18,
+ "editor.fontWeight": "normal",
+ "editor.fontLigatures": true,
+ "editor.stickyScroll.enabled": true,
+ "editor.minimap.renderCharacters": false,
+ "editor.suggestSelection": "first",
+ "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
+ //
+ // Excluded files and directories
+ "files.exclude": {
+ "**/.classpath": true,
+ "**/.project": true,
+ "**/.settings": true,
+ "**/.factorypath": true
+ },
+ "files.watcherExclude": {
+ "**/.bloop": true,
+ "**/.metals": true,
+ "**/.ammonite": true
+ },
+ //
+ // Settings Sync
+ "settingsSync.ignoredSettings": [
+ "sshfs.configs",
+ "editor.fontFamily"
+ ],
+ //
+ // Various settings
+ "explorer.confirmDragAndDrop": false,
+ "workbench.startupEditor": "none",
+ "security.workspace.trust.untrustedFiles": "open",
+ "emmet.showExpandedAbbreviation": "never",
+ //
+ // Remote SSH
+ "remote.SSH.remotePlatform": {
+ "lab-pc07": "linux",
+ "lab-pc28": "linux",
+ "lab-pc01": "linux",
+ "wasteside": "linux",
+ "sralab": "linux"
+ },
+ "remote.SSH.serverInstallPath": {
+ "sralab": "/srv/scratch/paul.aumann",
+ "lab-pc00": "/srv/scratch/paul.aumann",
+ "lab-pc44": "/srv/scratch/paul.aumann",
+ },
+ //
+ // Python
+ "python.languageServer": "Default",
+ "[python]": {
+ "editor.formatOnSave": true,
+ "editor.rulers": [
+ 120
+ ],
+ "editor.defaultFormatter": "ms-python.black-formatter",
+ "editor.codeActionsOnSave": {
+ "source.organizeImports": "explicit"
+ }
+ },
+ "black-formatter.args": [
+ "--line-length",
+ "120"
+ ],
+ //
+ // Jupyter Notebooks
+ "notebook.cellToolbarLocation": {
+ "default": "right",
+ "jupyter-notebook": "left"
+ },
+ "workbench.editorAssociations": {
+ "*.ipynb": "jupyter-notebook"
+ },
+ //
+ // R
+ "r.lsp.diagnostics": false,
+ //
+ // JSON
+ "[json][jsonc]": {
+ "editor.defaultFormatter": "vscode.json-language-features"
+ },
+ "prettier.singleQuote": true,
+ //
+ // Webdev
+ "[typescript][typescriptreact][javascript][html]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true,
+ "editor.indentSize": "tabSize",
+ "editor.tabSize": 2,
+ "emmet.showAbbreviationSuggestions": false,
+ "editor.linkedEditing": true,
+ },
+ "workbench.editor.showTabs": "none",
+}
\ No newline at end of file
diff --git a/vscode/snippets/gbs.code-snippets b/vscode/snippets/gbs.code-snippets
new file mode 100644
index 0000000..7653fe6
--- /dev/null
+++ b/vscode/snippets/gbs.code-snippets
@@ -0,0 +1,68 @@
+{
+ /*
+ Die Snippets ermöglichen es euch, anstelle von den Kommentaren einfach die Abkürzungen zu verwenden.
+ Wenn ihr also zum Beispiel im C-Code die Punkte anmerken wollt, navigiert an die entsprechende Stelle und
+ tippt dort das Kürzel "pkt" ein. Die VSCode-Autovervollständigung schlägt dann das entsprechende Snippet vor.
+
+ Mit TAB kann man dann durch die Eingabefelder ($1, $2) navigieren.
+ */
+ "PUNKTE C" : {
+ "scope" : "c",
+ "prefix" : "pkt",
+ "body": ["// PUNKTE: $1"]
+ },
+ "PUNKTE" : {
+ "scope" : "plaintext,markdown",
+ "prefix" : "pkt",
+ "body" : ["PUNKTE: $1"]
+ },
+ "ANMERKUNG C" : {
+ "scope": "c",
+ "prefix": "anm",
+ "body" : ["// ANMERKUNG: $1"]
+ },
+ "multiline ANMERKUNG C" : {
+ "scope" : "c",
+ "prefix": "manm",
+ "body" : ["/* ANMERKUNG:", "\t$1", "*/"]
+ },
+ "ANMERKUNG" : {
+ "scope": "plaintext,markdown",
+ "prefix": "anm",
+ "body" : ["ANMERKUNG: $1"]
+ },
+ "KORREKTUR C" : {
+ "scope" : "c",
+ "prefix": "krk",
+ "body" : ["// KORREKTUR: $1 (-$2P)"]
+ },
+ "multiline KORREKTUR C" : {
+ "scope" : "c",
+ "prefix": "mkrk",
+ "body" : ["/* KORREKTUR:", "\t$1 (-$2P)", "*/"]
+ },
+ "KORREKTUR" : {
+ "scope" : "plaintext,markdown",
+ "prefix": "krk",
+ "body" : ["KORREKTUR: $1 (-$2P)"]
+ },
+ "change to multiline KORREKTUR c" : {
+ "scope" : "c",
+ "prefix" : "cmkrk",
+ "body" : [
+ "\n/* KORREKTUR:",
+ "\t${TM_CURRENT_LINE/.+KORREKTUR: (.*) \\(-P\\) .*/$1/}",
+ "\t(-$2P)",
+ "*/"
+ ]
+ },
+ "change to multiline ANMERKUNG c" : {
+ "scope" : "c",
+ "prefix" : "cmanm",
+ "body" : [
+ "\n/* ANMERKUNG:",
+ "\t${TM_CURRENT_LINE/.+ANMERKUNG: (.*) c.*/$1/}",
+ "*/"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/vscode/snippets/markdown.json b/vscode/snippets/markdown.json
new file mode 100644
index 0000000..875ca79
--- /dev/null
+++ b/vscode/snippets/markdown.json
@@ -0,0 +1,15 @@
+{
+ // Place your snippets for markdown here. Each snippet is defined under a snippet name and has a prefix, body and
+ // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
+ // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
+ // same ids are connected.
+ // Example:
+ // "Print to console": {
+ // "prefix": "log",
+ // "body": [
+ // "console.log('$1');",
+ // "$2"
+ // ],
+ // "description": "Log output to console"
+ // }
+}
\ No newline at end of file
diff --git a/vscode/snippets/py-main.code-snippets b/vscode/snippets/py-main.code-snippets
new file mode 100644
index 0000000..4222c05
--- /dev/null
+++ b/vscode/snippets/py-main.code-snippets
@@ -0,0 +1,49 @@
+{
+ // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
+ // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
+ // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
+ // used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
+ // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
+ // Placeholders with the same ids are connected.
+ // Example:
+ // "Print to console": {
+ // "scope": "javascript,typescript",
+ // "prefix": "log",
+ // "body": [
+ // "console.log('$1');",
+ // "$2"
+ // ],
+ // "description": "Log output to console"
+ // }
+ "python main method" : {
+ "scope": "python",
+ "prefix": "pymain",
+ "body": [
+ "if __name__ == \"__main__\":",
+ "\t"
+ ],
+ "description": "Add a main method."
+ },
+ "python argparse" : {
+ "scope": "python",
+ "prefix": "ap",
+ "body": [
+ "import argparse",
+ "",
+ "if __name__ == \"__main__\":",
+ "\t",
+ "\tparser = argparse.ArgumentParser()",
+ "\targs = parser.parse_args()"
+ ]
+ },
+ "python argparse add argument" : {
+ "scope": "python",
+ "prefix": "apadd",
+ "body": "parser.add_argument(\"${1:-o}\", dest=\"${2:o}\", type=${3:str}, help=\"${4:option}\")"
+ },
+ "python shebang" : {
+ "scope": "python",
+ "prefix": "sb",
+ "body": "#!/usr/bin/python3"
+ }
+}
\ No newline at end of file
diff --git a/vscode/snippets/tsx.code-snippets b/vscode/snippets/tsx.code-snippets
new file mode 100644
index 0000000..f63a0b5
--- /dev/null
+++ b/vscode/snippets/tsx.code-snippets
@@ -0,0 +1,40 @@
+{
+ // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
+ // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
+ // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
+ // used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
+ // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
+ // Placeholders with the same ids are connected.
+ // Example:
+ // "Print to console": {
+ // "scope": "javascript,typescript",
+ // "prefix": "log",
+ // "body": [
+ // "console.log('$1');",
+ // "$2"
+ // ],
+ // "description": "Log output to console"
+ // }
+ "boilerplate" : {
+ "scope" : "typescriptreact",
+ "prefix" : "bp",
+ "body" : [
+ "import { Typography } from \"@mui/material\";",
+ ""
+ "type Props = {};",
+ "",
+ "export default function $1({}: Props){",
+ "\treturn TODO;"
+ "}"
+ ]
+ },
+ "grid-item" : {
+ "scope" : "typescriptreact",
+ "prefix" : "gi",
+ "body" : [
+ "",
+ "\t$2",
+ ""
+ ]
+ }
+}
\ No newline at end of file