CODE OSS SETTINGS

JSON CodeOSS

Code OSS is an open-source code editor developed by Microsoft. It serves as the foundation for several popular code editors, including Visual Studio Code (VSCode), VSCodium, and Project IDX. Code OSS provides the core editing functionalities, such as syntax highlighting, code completion, debugging support, and extensions. By building upon this robust base, these editors offer tailored experiences to different user needs and preferences. VSCode, for example, integrates with Microsoft's cloud services, while VSCodium focuses on a completely open-source experience. Project IDX, a newer entrant, leverages Code OSS to provide a web-based development environment.

Screenshot of VSCodium

VSCodium shown using my Cyan Bits theme with Vim extension

The settings.json file within each Code OSS-based editor provides a powerful mechanism for customization. By carefully adjusting the settings within this file, developers can significantly streamline their workflow and create a minimalistic coding environment. For instance, users can disable distracting features like the activity bar, panel, and status bar. They can also customize the editor's appearance with themes and font preferences. Furthermore, settings.json allows for fine-grained control over extensions, enabling users to selectively enable or disable them based on their specific needs. This level of customization empowers developers to tailor their coding experience to their unique preferences and project requirements.

You can use my Code OSS settings.json file to jump start your tailored coding experience. Simply copy it and paste it into your editor under Preferences: Open User Settings (JSON). Please note that some settings in my file may not be available on the Code OSS application of your choice. In most cases, the application will simply comment out those settings in the file. Some of my settings are related to extensions I often use. Those extensions are listed at the end of my settings.json file if you want to install them.

// M4TTBIT Code OSS Settings and Extensions
// settings.json file

{
    "workbench.startupEditor": "none",
    "editor.renderWhitespace": "none",
    "window.titleBarStyle": "custom",
    "window.customTitleBarVisibility": "auto",
    "zenMode.fullScreen": false,
    "zenMode.centerLayout": false,
    "zenMode.hideLineNumbers": false,
    "editor.fontSize": 14,
    "terminal.integrated.fontSize": 14,
    "[css]": {
        "editor.tabSize": 2
    },
    "[html]": {
        "editor.tabSize": 4
    },
    "[javascript]": {
        "editor.tabSize": 4
    },
    "[python]": {
        "editor.tabSize": 4
    },
    "[pico-8]": {
        "editor.tabSize": 1
    },
    "window.commandCenter": false,
    "css.hover.references": false,
    "less.hover.references": false,
    "scss.hover.references": false,
    "html.hover.references": false,
    "editor.hover.enabled": false,
    "editor.parameterHints.enabled": false,
    "editor.quickSuggestionsDelay": 1000,
    "editor.quickSuggestions": {
        "other": "on",
        "comments": "on",
        "strings": "on"
    },
    "workbench.activityBar.location": "hidden",
    "editor.stickyScroll.enabled": false,
    "security.workspace.trust.untrustedFiles": "open",
    "workbench.layoutControl.enabled": false,
    "editor.fontFamily": "Hack Nerd Font, Menlo, Monaco, 'Courier New', monospace",
    "explorer.confirmDragAndDrop": false,
    "editor.occurrencesHighlight": "off",
    "terminal.integrated.cursorBlinking": true,
    "workbench.iconTheme": "vs-seti",
    "cSpell.userWords": [
        "m4ttbit",
        "PICO",
        "gameplay"
    ],
    "editor.glyphMargin": false,
    "workbench.tree.indent": 20,
    "editor.lightbulb.enabled": "off",
    "liveServer.settings.donotShowInfoMsg": true,
    "editor.guides.indentation": false,
    "breadcrumbs.enabled": false,
    "editor.minimap.enabled": false,
    "geminicodeassist.project": "",
    "geminicodeassist.inlineSuggestions.enableAuto": false,
    "geminicodeassist.enable": false,
    "atari-dev-studio.application.configuration.latestVersion": "0.10.5",
    "git.confirmSync": false,
    "workbench.colorTheme": "Cyan Bits",
    "problems.decorations.enabled": false,
    "problems.visibility": false,
    "editor.cursorStyle": "block",
    "editor.cursorBlinking": "blink",
	"chat.commandCenter.enabled": false
}

// EXTENSIONS
// Code Spell Checker
// Hex Editor
// Live Server
// Python
// pico8-ls (need to download VSX file)
// Atari Dev Studio
// Cyan Bits Theme
// Gemini Code Assist
// M4TTBIT Code OSS Keybindings
// keybindings.json file

[
    {
        "key": "alt+t",
        "command": "editor.emmet.action.removeTag"
    },
    {
        "key": "ctrl+p ctrl+3",
        "command": "python.execInTerminal-icon"
    },
    {
        "key": "ctrl+l ctrl+s",
        "command": "extension.liveServer.goOnline",
        "when": "editorTextFocus"
    },
    {
        "key": "alt+l alt+o",
        "command": "-extension.liveServer.goOnline",
        "when": "editorTextFocus"
    },
    {
        "key": "alt+l alt+s",
        "command": "extension.liveServer.goOffline",
        "when": "editorTextFocus"
    },
    {
        "key": "alt+l alt+c",
        "command": "-extension.liveServer.goOffline",
        "when": "editorTextFocus"
    }
]
// Cyan Bits Color Theme by M4TTBIT
// Cyan Bits-color-theme.json file

{
	"name": "Cyan Bits",
	"type": "dark",
	"colors": {
		"activityBar.activeBorder": "#80cbc4",
		"activityBar.background": "#161718",
		"activityBar.border": "#44444460",
		"activityBar.foreground": "#49dffc",
		"activityBar.inactiveForeground": "#ffffff66",
		"activityBarBadge.background": "#49dffc",
		"activityBarBadge.foreground": "#161718",
		"badge.background": "#49dffc",
		"badge.foreground": "#161718",
		"breadcrumb.activeSelectionForeground": "#80cbc4",
		"breadcrumb.background": "#212121",
		"breadcrumb.focusForeground": "#eeffff",
		"breadcrumb.foreground": "#848484",
		"breadcrumbPicker.background": "#1a1a1a",
		"button.background": "#49dffc33",
		"button.foreground": "#ffffff",
		"button.hoverBackground": "#49dffc66",
		"button.secondaryBackground": "#3a3d41",
		"button.secondaryForeground": "#ffffff",
		"button.secondaryHoverBackground": "#45494e",
		"debugConsole.errorForeground": "#f07178",
		"debugConsole.infoForeground": "#89ddff",
		"debugConsole.warningForeground": "#ffcb6b",
		"debugToolBar.background": "#212121",
		"diffEditor.insertedTextBackground": "#89ddff20",
		"diffEditor.removedTextBackground": "#ff9cac20",
		"dropdown.background": "#212121",
		"dropdown.border": "#ffffff10",
		"editor.background": "#0f0f0f",
		"editor.findMatchBackground": "#000000",
		"editor.findMatchBorder": "#80cbc4",
		"editor.findMatchHighlightBackground": "#00000050",
		"editor.findMatchHighlightBorder": "#ffffff50",
		"editor.findRangeHighlightBackground": "#ffcb6b30",
		"editor.foreground": "#eeffff",
		"editor.lineHighlightBackground": "#49dffc18",
		"editor.lineHighlightBorder": "#00000000",
		"editor.rangeHighlightBackground": "#ffffff0d",
		"editor.selectionBackground": "#49dffc33",
		"editor.selectionHighlightBackground": "#49dffc1a",
		"editor.wordHighlightBackground": "#ff9cac30",
		"editor.wordHighlightStrongBackground": "#c3e88d30",
		"editorBracketMatch.background": "#212121",
		"editorBracketMatch.border": "#ffcc0050",
		"editorCursor.background": "#0c1516",
		"editorCursor.foreground": "#49dffc",
		"editorError.foreground": "#f0717870",
		"editorGroup.border": "#49dffc",
		"editorGroup.dropBackground": "#f0717880",
		"editorGroup.focusedEmptyBorder": "#f07178",
		"editorGroupHeader.tabsBackground": "#181818",
		"editorGutter.addedBackground": "#c3e88d60",
		"editorGutter.deletedBackground": "#f0717860",
		"editorGutter.modifiedBackground": "#82aaff60",
		"editorHoverWidget.background": "#212121",
		"editorHoverWidget.border": "#ffffff10",
		"editorIndentGuide.activeBackground1": "#424242",
		"editorIndentGuide.background1": "#42424270",
		"editorInfo.foreground": "#82aaff70",
		"editorLineNumber.activeForeground": "#848484",
		"editorLineNumber.foreground": "#424242",
		"editorLink.activeForeground": "#eeffff",
		"editorMarkerNavigation.background": "#eeffff05",
		"editorOverviewRuler.border": "#212121",
		"editorOverviewRuler.errorForeground": "#f0717840",
		"editorOverviewRuler.findMatchForeground": "#80cbc445",
		"editorOverviewRuler.infoForeground": "#82aaff40",
		"editorOverviewRuler.warningForeground": "#ffcb6b40",
		"editorRuler.foreground": "#424242",
		"editorSuggestWidget.background": "#212121",
		"editorSuggestWidget.border": "#ffffff10",
		"editorSuggestWidget.foreground": "#eeffff",
		"editorSuggestWidget.highlightForeground": "#80cbc4",
		"editorSuggestWidget.selectedBackground": "#49ddfc33",
		"editorWarning.foreground": "#ffcb6b70",
		"editorWhitespace.foreground": "#eeffff40",
		"editorWidget.background": "#1a1a1a",
		"editorWidget.border": "#80cbc4",
		"editorWidget.resizeBorder": "#80cbc4",
		"extensionBadge.remoteForeground": "#eeffff",
		"extensionButton.prominentBackground": "#c3e88d90",
		"extensionButton.prominentForeground": "#eeffff",
		"extensionButton.prominentHoverBackground": "#c3e88d",
		"focusBorder": "#49dffc",
		"foreground": "#cccccc",
		"gitDecoration.addedResourceForeground": "#49dffc",
		"gitDecoration.conflictingResourceForeground": "#ffcb6b90",
		"gitDecoration.deletedResourceForeground": "#49dffc",
		"gitDecoration.ignoredResourceForeground": "#49dffc",
		"gitDecoration.modifiedResourceForeground": "#49dffc",
		"gitDecoration.untrackedResourceForeground": "#49dffc",
		"icon.foreground": "#49dffc",
		"input.background": "#2b2b2b",
		"input.border": "#ffffff10",
		"input.foreground": "#eeffff",
		"input.placeholderForeground": "#eeffff60",
		"inputOption.activeBackground": "#eeffff30",
		"inputOption.activeBorder": "#eeffff30",
		"inputValidation.errorBorder": "#f07178",
		"inputValidation.infoBorder": "#82aaff",
		"inputValidation.warningBorder": "#ffcb6b",
		"list.activeSelectionBackground": "#49dffc33",
		"list.activeSelectionForeground": "#ffffff",
		"list.dropBackground": "#383b3d",
		"list.focusBackground": "#49dffc33",
		"list.focusForeground": "#cccccc",
		"list.highlightForeground": "#49dffc",
		"list.hoverBackground": "#49dffc33",
		"list.hoverForeground": "#cccccc",
		"list.inactiveSelectionBackground": "#49dffc1d",
		"list.inactiveSelectionForeground": "#cccccc",
		"listFilterWidget.background": "#49dffc22",
		"listFilterWidget.noMatchesOutline": "#ff0000",
		"listFilterWidget.outline": "#00000030",
		"menu.background": "#252526",
		"menu.border": "#00000085",
		"menu.foreground": "#cccccc",
		"menu.selectionBackground": "#49dffc33",
		"menu.selectionBorder": "#00000030",
		"menu.selectionForeground": "#ffffff",
		"menu.separatorBackground": "#ffffff66",
		"menubar.selectionBackground": "#49dffc33",
		"menubar.selectionBorder": "#00000030",
		"menubar.selectionForeground": "#ffffff",
		"notebook.focusedCellBorder": "#80cbc4",
		"notebook.inactiveFocusedCellBorder": "#80cbc450",
		"notificationCenter.border": "#49dffc50",
		"notificationLink.foreground": "#80cbc4",
		"notificationToast.border": "#49dffc50",
		"notifications.background": "#161718",
		"notifications.foreground": "#49dffc",
		"panel.background": "#181818",
		"panel.border": "#49dffc",
		"panelTitle.activeBorder": "#49ddfc",
		"panelTitle.activeForeground": "#49ddfc",
		"panelTitle.inactiveForeground": "#e7e7e799",
		"peekView.border": "#49dffc",
		"peekViewEditor.background": "#2b2b2b",
		"peekViewEditor.matchHighlightBackground": "#61616150",
		"peekViewEditorGutter.background": "#2b2b2b",
		"peekViewResult.background": "#2b2b2b",
		"peekViewResult.matchHighlightBackground": "#61616150",
		"peekViewResult.selectionBackground": "#84848470",
		"peekViewTitle.background": "#161718",
		"peekViewTitleDescription.foreground": "#eeffff60",
		"peekViewTitleLabel.foreground": "#49dffc",
		"pickerGroup.border": "#ffffff1a",
		"pickerGroup.foreground": "#80cbc4",
		"progressBar.background": "#49dffc",
		"quickInput.background": "#212121",
		"quickInput.foreground": "#848484",
		"quickInputList.focusBackground": "#eeffff20",
		"sash.hoverBorder": "#49dffc",
		"scrollbar.shadow": "#00000030",
		"scrollbarSlider.activeBackground": "#80cbc4",
		"scrollbarSlider.background": "#eeffff20",
		"scrollbarSlider.hoverBackground": "#eeffff10",
		"selection.background": "#00000080",
		"settings.checkboxBackground": "#1a1a1a",
		"settings.checkboxForeground": "#eeffff",
		"settings.dropdownBackground": "#1a1a1a",
		"settings.dropdownForeground": "#eeffff",
		"settings.headerForeground": "#80cbc4",
		"settings.modifiedItemIndicator": "#80cbc4",
		"settings.numberInputBackground": "#1a1a1a",
		"settings.numberInputForeground": "#eeffff",
		"settings.textInputBackground": "#1a1a1a",
		"settings.textInputForeground": "#eeffff",
		"sideBar.background": "#181818",
		"sideBar.border": "#49dffc",
		"sideBar.foreground": "#cccccc",
		"sideBarSectionHeader.background": "#182123",
		"sideBarSectionHeader.border": "#cccccc33",
		"sideBarSectionHeader.foreground": "#cccccc",
		"sideBarTitle.foreground": "#49dffc",
		"statusBar.background": "#161718",
		"statusBar.border": "#44444460",
		"statusBar.debuggingBackground": "#cc3333",
		"statusBar.debuggingForeground": "#ffffff",
		"statusBar.foreground": "#49dffc",
		"statusBar.noFolderBackground": "#161718",
		"statusBar.noFolderForeground": "#49dffc",
		"statusBarItem.activeBackground": "#f0717880",
		"statusBarItem.hoverBackground": "#49dffc20",
		"statusBarItem.remoteBackground": "#49dffc33",
		"statusBarItem.remoteForeground": "#ffffff",
		"tab.activeBackground": "#181818",
		"tab.activeBorder": "#49dffc",
		"tab.activeForeground": "#49dffc",
		"tab.activeModifiedBorder": "#848484",
		"tab.border": "#212121",
		"tab.hoverBackground": "#49dffc22",
		"tab.inactiveBackground": "#181818",
		"tab.inactiveForeground": "#c6c6c6",
		"tab.inactiveModifiedBorder": "#904348",
		"tab.unfocusedActiveBorder": "#4a4a4a",
		"tab.unfocusedActiveForeground": "#eeffff",
		"tab.unfocusedActiveModifiedBorder": "#c05a60",
		"tab.unfocusedInactiveModifiedBorder": "#904348",
		"terminal.ansiBlack": "#000000",
		"terminal.ansiBlue": "#82aaff",
		"terminal.ansiBrightBlack": "#4a4a4a",
		"terminal.ansiBrightBlue": "#82aaff",
		"terminal.ansiBrightCyan": "#89ddff",
		"terminal.ansiBrightGreen": "#c3e88d",
		"terminal.ansiBrightMagenta": "#c792ea",
		"terminal.ansiBrightRed": "#f07178",
		"terminal.ansiBrightWhite": "#ffffff",
		"terminal.ansiBrightYellow": "#ffcb6b",
		"terminal.ansiCyan": "#49dffc",
		"terminal.ansiGreen": "#c3e88d",
		"terminal.ansiMagenta": "#c792ea",
		"terminal.ansiRed": "#f07178",
		"terminal.ansiWhite": "#fafafa",
		"terminal.ansiYellow": "#ffcb6b",
		"terminal.border": "#49dffc",
		"terminal.selectionBackground": "#49dffc1a",
		"terminalCursor.background": "#0c1516",
		"terminalCursor.foreground": "#49dffc",
		"textLink.activeForeground": "#eeffff",
		"textLink.foreground": "#49dffc",
		"titleBar.activeBackground": "#161718",
		"titleBar.activeForeground": "#49dffc",
		"titleBar.border": "#44444460",
		"titleBar.inactiveBackground": "#26262699",
		"titleBar.inactiveForeground": "#9d9d9d",
		"tree.indentGuidesStroke": "#585858",
		"widget.shadow": "#00000030",
		"terminal.background": "#0f0f0f",
		"statusBarItem.compactHoverBackground": "#49dffc20",
		"statusBarItem.prominentBackground": "#49dffc33",
		"statusBarItem.prominentForeground": "#49dffc",
		"statusBarItem.prominentHoverBackground": "#49dffc20",
		"statusBarItem.prominentHoverForeground": "#49dffc",
		"statusBarItem.remoteHoverBackground": "#49dffc20",
		"statusBarItem.remoteHoverForeground": "#cccccc",
		"statusBarItem.errorBackground": "#161718",
		"statusBarItem.errorForeground": "#49dffc",
		"statusBarItem.errorHoverBackground": "#49dffc20",
		"statusBarItem.offlineBackground": "#161718",
		"statusBarItem.offlineForeground": "#49dffc",
		"statusBarItem.warningBackground": "#161718",
		"statusBarItem.warningForeground": "#49dffc"
	},
	"tokenColors": [
		{
			"scope": "string",
			"settings": {
				"foreground": "#C3E88D"
			}
		},
		{
			"scope": "punctuation, constant.other.symbol",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "constant.character.escape, text.html constant.character.entity.named",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "constant.language.boolean",
			"settings": {
				"foreground": "#FF9CAC"
			}
		},
		{
			"scope": "constant.numeric",
			"settings": {
				"foreground": "#F78C6C"
			}
		},
		{
			"scope": "variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "keyword.other",
			"settings": {
				"foreground": "#F78C6C"
			}
		},
		{
			"scope": "keyword, modifier, variable.language.this, support.type.object, constant.language",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "entity.name.function, support.function",
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": "storage.type, storage.modifier, storage.control",
			"settings": {
				"foreground": "#C792EA"
			}
		},
		{
			"scope": "support.module, support.node",
			"settings": {
				"foreground": "#F07178",
				"fontStyle": "italic"
			}
		},
		{
			"scope": "support.type, constant.other.key",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "entity.name.type, entity.other.inherited-class, entity.other",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "comment",
			"settings": {
				"foreground": "#4A4A4A",
				"fontStyle": "italic"
			}
		},
		{
			"scope": "comment punctuation.definition.comment, string.quoted.docstring",
			"settings": {
				"foreground": "#4A4A4A",
				"fontStyle": "italic"
			}
		},
		{
			"scope": "punctuation",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "entity.name, entity.name.type.class, support.type, support.class, meta.use",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "variable.object.property, meta.field.declaration entity.name.function",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "meta.definition.method entity.name.function",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "meta.function entity.name.function",
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": "template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "meta.embedded, source.groovy.embedded, meta.template.expression",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "entity.name.tag.yaml",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "constant.language.json",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "entity.other.attribute-name.class",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "entity.other.attribute-name.id",
			"settings": {
				"foreground": "#F78C6C"
			}
		},
		{
			"scope": "source.css entity.name.tag",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "support.type.property-name.css",
			"settings": {
				"foreground": "#B2CCD6"
			}
		},
		{
			"scope": "meta.tag, punctuation.definition.tag",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "entity.name.tag",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "entity.other.attribute-name",
			"settings": {
				"foreground": "#C792EA"
			}
		},
		{
			"scope": "punctuation.definition.entity.html",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "markup.heading",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "text.html.markdown meta.link.inline, meta.link.reference",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "text.html.markdown beginning.punctuation.definition.list",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "markup.italic",
			"settings": {
				"foreground": "#F07178",
				"fontStyle": "italic"
			}
		},
		{
			"scope": "markup.bold",
			"settings": {
				"foreground": "#F07178",
				"fontStyle": "bold"
			}
		},
		{
			"scope": "markup.bold markup.italic, markup.italic markup.bold",
			"settings": {
				"foreground": "#F07178",
				"fontStyle": "italic bold"
			}
		},
		{
			"scope": "markup.fenced_code.block.markdown punctuation.definition.markdown",
			"settings": {
				"foreground": "#C3E88D"
			}
		},
		{
			"scope": "markup.inline.raw.string.markdown",
			"settings": {
				"foreground": "#C3E88D"
			}
		},
		{
			"scope": "keyword.other.definition.ini",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "entity.name.section.group-title.ini",
			"settings": {
				"foreground": "#89DDFF"
			}
		},
		{
			"scope": "source.cs meta.class.identifier storage.type",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "source.cs meta.method.identifier entity.name.function",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "source.cs meta.method-call meta.method, source.cs entity.name.function",
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": "source.cs storage.type",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "source.cs meta.method.return-type",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "source.cs meta.preprocessor",
			"settings": {
				"foreground": "#4A4A4A"
			}
		},
		{
			"scope": "source.cs entity.name.type.namespace",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "meta.jsx.children, SXNested",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "support.class.component",
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": "source.cpp meta.block variable.other",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "source.python meta.member.access.python",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "source.python meta.function-call.python, meta.function-call.arguments",
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": "meta.block",
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": "entity.name.function.call",
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": "source.php support.other.namespace, source.php meta.use support.class",
			"settings": {
				"foreground": "#EEFFFF"
			}
		},
		{
			"scope": "constant.keyword",
			"settings": {
				"foreground": "#89DDFF",
				"fontStyle": "italic"
			}
		},
		{
			"scope": "entity.name.function",
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": [
				"constant.other.placeholder"
			],
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": [
				"markup.deleted"
			],
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": [
				"markup.inserted"
			],
			"settings": {
				"foreground": "#C3E88D"
			}
		},
		{
			"scope": [
				"markup.underline"
			],
			"settings": {
				"fontStyle": "underline"
			}
		},
		{
			"scope": [
				"keyword.control"
			],
			"settings": {
				"foreground": "#89DDFF",
				"fontStyle": "italic"
			}
		},
		{
			"scope": [
				"variable.parameter"
			],
			"settings": {
				"fontStyle": "italic"
			}
		},
		{
			"scope": [
				"variable.parameter.function.language.special.self.python"
			],
			"settings": {
				"foreground": "#F07178",
				"fontStyle": "italic"
			}
		},
		{
			"scope": [
				"constant.character.format.placeholder.other.python"
			],
			"settings": {
				"foreground": "#F78C6C"
			}
		},
		{
			"scope": [
				"markup.quote"
			],
			"settings": {
				"foreground": "#89DDFF",
				"fontStyle": "italic"
			}
		},
		{
			"scope": [
				"markup.fenced_code.block"
			],
			"settings": {
				"foreground": "#EEFFFF90"
			}
		},
		{
			"scope": [
				"punctuation.definition.quote"
			],
			"settings": {
				"foreground": "#FF9CAC"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#C792EA"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#FFCB6B"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#F78C6C"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#F07178"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#916B53"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#82AAFF"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#FF9CAC"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#C792EA"
			}
		},
		{
			"scope": [
				"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
			],
			"settings": {
				"foreground": "#C3E88D"
			}
		},
		{
			"scope": "comment",
			"settings": {
				"foreground": "#A0A0A0"
			}
		},
		{
			"scope": "punctuation.definition.comment",
			"settings": {
				"foreground": "#A0A0A0"
			}
		},
		{
			"scope": "string",
			"settings": {
				"foreground": "#A6E22E"
			}
		},
		{
			"scope": "number",
			"settings": {
				"foreground": "#AE81FF"
			}
		},
		{
			"scope": "keyword",
			"settings": {
				"foreground": "#C7A0FF"
			}
		},
		{
			"scope": "variable",
			"settings": {
				"foreground": "#49DFFC"
			}
		},
		{
			"scope": "constant",
			"settings": {
				"foreground": "#49DFFC"
			}
		},
		{
			"scope": "type",
			"settings": {
				"foreground": "#A6E22E"
			}
		},
		{
			"scope": "function",
			"settings": {
				"foreground": "#61AFEF"
			}
		},
		{
			"scope": "punctuation",
			"settings": {
				"foreground": "#E3E3E3"
			}
		},
		{
			"scope": "storage.type",
			"settings": {
				"foreground": "#C7A0FF"
			}
		},
		{
			"scope": "entity.name.class",
			"settings": {
				"foreground": "#A6E22E"
			}
		},
		{
			"scope": "entity.name.function",
			"settings": {
				"foreground": "#61AFEF"
			}
		},
		{
			"scope": "entity.name.type",
			"settings": {
				"foreground": "#A6E22E"
			}
		},
		{
			"scope": "token.info-token",
			"settings": {
				"foreground": "#6796E6"
			}
		},
		{
			"scope": "token.warn-token",
			"settings": {
				"foreground": "#CD9731"
			}
		},
		{
			"scope": "token.error-token",
			"settings": {
				"foreground": "#F44747"
			}
		},
		{
			"scope": "token.debug-token",
			"settings": {
				"foreground": "#B267E6"
			}
		}
	]
}
Example of Cyan Bits theme in VSCodium

CYAN BITS

You can download the Cyan Bits color theme for VSCode, VSCodium, or ProjectIDX. Simply download the VSIX extension file and install it in your editor's extensions panel.

MICRO CONFIG

JSON Micro

Micro is a modern terminal text editor. It prioritizes ease of use, offering features like mouse support and familiar keybindings. It aims to provide a more intuitive experience compared to traditional terminal editors.

Screenshot of Micro Editor

Micro shown in Chromebook Terminal with m4tt color scheme

Developed with Go and Lua for plugin support, Micro is a tiny but mighty editor that includes syntax highlighting, color schemes, and automatic indentation. Its plugin manager simplifies customization with tools like linters and formatters. Features like multiple cursors, search and replace, and split-screen enhance development workflows.

Micro's settings and keybindings are managed through .json files located in its configuration directory. To update these, simply open the respective settings.json or bindings.json file with Micro itself or another text editor. Modify the JSON values according to your desired configurations or by copying my settings into the file. Changes are applied immediately upon saving the file. For keybindings, you can use my keybindings.json file or refer to Micro's documentation for valid key combinations and commands.

Color schemes in Micro are defined in .micro files and placed in the colorschemes subdirectory of Micro's configuration directory. To add a new color scheme, create a file with a .micro extension, defining the color mappings for various elements. You can copy my color mappings into your .micro color scheme file. Once saved in the correct location, the new scheme will be available for selection within Micro's settings. You can switch between color schemes using the set colorscheme command followed by the scheme's filename (without the .micro extension).

// M4TTBIT Micro Settings and Plugins
// settings.json file

{
    "colorscheme": "m4tt",
    "linter": false
}

// PLUGINS
// filemanager
// runit
// M4TTBIT Micro Keybindings
// keybindings.json file

{
    "Alt-/": "lua:comment.comment",
    "CtrlUnderscore": "lua:comment.comment",
    "F12": "command:makeup",
    "F5": "command:runit",
    "F9": "command:makeupbg"
}
// m4ttbit Color Scheme by M4TTBIT
// m4tt.micro file

color-link color-column "#161718"
color-link comment "#4F6875,#161718"
color-link constant "#F07178,#161718"
color-link constant.number "#F78C6A,#161718"
color-link constant.specialChar "#89DDF3,#161718"
color-link constant.string "#C3E88D,#161718"
color-link current-line-number "#49DFFC,#161718"
color-link cursor-line "#232425"
color-link default "#EEFFFF,#161718"
color-link diff-added "#00AF00"
color-link diff-modified "#FFAF00"
color-link diff-deleted "#D70000"
color-link divider "#161718,#49DFFC"
color-link error "bold #161718,#F07178"
color-link gutter-error "#EEFFFF,#F07178"
color-link gutter-warning "#EEFFFF,#FFF176"
color-link hlsearch "#FFFFFF,#546E7A"
color-link identifier "#82AAFF,#161718"
color-link identifier.macro "#FFCB6B,#161718"
color-link indent-char "#505050,#161718"
color-link line-number "#656866,#232425"
color-link preproc "#C792EA,#161718"
color-link scrollbar "#49DFFC,#283942"
color-link special "#C792EA,#161718"
color-link statement "#C792EA,#161718"
color-link statusline "#49DFFC,#232425"
color-link symbol "#96CBFE,#161718"
color-link symbol.brackets "#89DDF3,#161718"
color-link symbol.operator "#C792EA,#161718"
color-link tabbar "#49DFFC,#3b4d56"
color-link todo "bold #C792EA,#161718"
color-link type "#FFCB6B,#161718"
color-link underlined "underline #EEFFFF,#161718"
color-link match-brace "#161718,#C792EA"
color-link tab-error "#D75F5F"
color-link trailingws "#D75F5F"

VIM CONFIG

Vim Script 8 Vim Neovim

Vim and Neovim are powerful command line interface (CLI) code editors known for their efficiency and customizability. Both are used within a terminal or terminal emulator. Vim is the original editor, while Neovim is a fork that aims to improve upon Vim's architecture and extensibility. Both editors feature a modal interface with distinct modes for inserting, navigating, and editing text. This modal approach, though initially challenging to learn, can significantly increase editing speed once mastered. Vim and Neovim boast a vast ecosystem of plugins and extensions, allowing users to tailor the editor to their specific needs and workflows. From syntax highlighting and code completion to version control integration and debugging tools, the available plugins are virtually limitless.

Screenshot of Vim

Vim shown in Chromebook Terminal with TokyoNight color scheme

The .vimrc file is a crucial configuration file for both Vim and Neovim. It allows users to customize various aspects of the editor's behavior, such as keybindings, color schemes, and settings. Vim and Neovim can both use the same .vimrc file as long as it's written in Vim Script 8. While Neovim does not support Vim Script 9+, it also has its own configuration system that uses the Lua programming language.

The .vimrc file is also often used to install and manage plugins, similar to extensions in Code OSS. A popular plugin manager for Vim and Neovim is vim-plug. With vim-plug, users can easily install, update, and manage plugins within their .vimrc file. This streamlines the plugin installation process and provides a centralized location for managing all installed plugins.

While I've tried to comment out as much of my .vimrc code, you'll likely need to install some additional items in order to get it to function as intended on your machine. For example, my configuration uses the Hack Nerd Font. However, you're welcome to download any font from Nerd Font and load it into your terminal emulator. You also may need to install some dependent libraries related to some of the plugins. Be sure to read through the vim-plug documentation for details.

" M4TTBIT .vimrc Configuration Code

" SETTINGS

" Disable compatibility with vi which can cause unexpected issues.
set nocompatible

" Enable type file detection. Vim will be able to try to detect the type of file is use.
filetype on

" Enable plugins and load plugin for the detected file type.
filetype plugin on

" Load an indent file for the detected file type.
filetype indent on

" Turn syntax highlighting on.
syntax on

" Enable spell checker
set nospell

" Add numbers to the file.
set number

" Highlight cursor line underneath the cursor horizontally.
set cursorline

" Highlight cursor line underneath the cursor vertically.
set cursorcolumn

" Set shift width to 4 spaces.
set shiftwidth=4

" Set tab width to 4 columns.
set tabstop=4

" Set mouse ability
set mouse=a

" Turn off alert bell
set belloff=all

" Set line spacing
set linespace=3

" Use space characters instead of tabs.
set expandtab

" Do not save backup files.
set nobackup

" Do not show intro message on Vim start
set shm+=I

" Do not let cursor scroll below or above N number of lines when scrolling.
set scrolloff=10

" Do not wrap lines. Allow long lines to extend as far as the line goes.
set nowrap

" While searching though a file incrementally highlight matching characters as you type.
set incsearch

" Ignore capital letters during search.
set ignorecase

" Override the ignorecase option if searching for capital letters.
" This will allow you to search specifically for capital letters.
set smartcase

" Show partial command you type in the last line of the screen.
set showcmd

" Show the mode you are on the last line.
set showmode

" Show matching words during a search.
set showmatch

" Use highlighting when doing a search.
set hlsearch

" Set the commands to save in history default number is 20.
set history=1000

" Enable auto completion menu after pressing TAB.
set wildmenu

" Make wildmenu behave like similar to Bash completion.
set wildmode=list:longest

" There are certain files that we would never want to edit with Vim.
" Wildmenu will ignore files with these extensions.
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx

set encoding=UTF-8

set fileencoding=utf-8

set termencoding=utf-8

set t_Co=256

" AutoComplPop Plugin Options
set completeopt=menuone
set complete+=kspell
set shortmess+=c

let g:polyglot_disabled = ['markdown']

" OmniSharp settings
let g:OmniSharp_server_use_mono = 1

" Airline Plugin configuration
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail' " file-name.js

" ALE Fix config
let g:ale_fixers = {
\   '*': ['remove_trailing_lines', 'trim_whitespace', 'prettier', 'fecs'],
\   'javascript': ['eslint'],
\   'html': ['html-beautify', 'tidy'],
\   'python': ['pylint'],
\}

" Disable ALE for C# files
let g:ale_pattern_options = {
\   '\.cs$': {'ale_enabled': 0},
\}

" ALE Linter Config
let g:ale_linters = {
\   'javascript': ['eslint'],
\   'python': ['pylint'],
\}

" ALE Config
let g:ale_completion_enabled = 1
let g:ale_completiondelay = 10000
let g:ale_sign_error = '>>'
let g:ale_sign_warning = '--'
let g:ale_lint_on_text_changed = 'never'
let g:ale_lint_on_insert_leave = 0
let g:ale_lint_on_enter = 0
let g:ale_virtualtext_cursor = 0
let g:ale_fix_on_save = 0

" Netrw Config
let g:netrw_keepdir = 0
let g:netrw_winsize = 30
let g:netrw_banner = 0
let g:netrw_list_hide = '\(^\|\s\s\)\zs\.\S\+'
let g:netrw_localcopydircmd = 'cp -r'
hi! link netrwMarkFile Search

" PLUGINS
" Install vim-plug with curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
"   https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

call plug#begin('~/.vim/plugged')

  Plug 'dense-analysis/ale'
  Plug 'vim-airline/vim-airline'
  Plug 'vim-airline/vim-airline-themes'
  Plug 'preservim/nerdtree'
  Plug 'machakann/vim-highlightedyank'
  Plug 'sheerun/vim-polyglot'
  Plug 'OmniSharp/omnisharp-vim'
  Plug 'bakudankun/pico-8.vim'
  Plug 'ssteinbach/vim-pico8-syntax'
  Plug 'ryanoasis/vim-devicons'
  Plug 'vim-scripts/HTML-AutoCloseTag'
  Plug 'ap/vim-css-color'
  Plug 'junegunn/fzf'
  Plug 'junegunn/fzf.vim'
  Plug 'tpope/vim-commentary'
  Plug 'tomasiser/vim-code-dark'
  Plug 'bluz71/vim-moonfly-colors', { 'as': 'moonfly' }
  Plug 'sainnhe/edge'
  Plug 'joshdick/onedark.vim'
  Plug 'NLKNguyen/papercolor-theme'
  Plug 'ghifarit53/tokyonight-vim'
  Plug 'vim-scripts/AutoComplPop'
  " Intall sudo apt install wl-clipboard on ChromeOS for the following plugin
  Plug 'christoomey/vim-system-copy'

call plug#end()

" MAPPINGS

" Set space as the leader key.
let mapleader = " "

" Press \\ to jump back to the last cursor position.
nnoremap <leader>\ ``

" Press \p to print the current file to the default printer from a Linux operating system.
" View available printers:   lpstat -v
" Set default printer:       lpoptions -d <printer_name>
" <silent> means do not display output.
nnoremap <silent> <leader>p :%w !lp<CR>

" Type jj to exit insert mode quickly.
inoremap jj <Esc>

" Press the space bar to type the : character in command mode.
nnoremap <space> :

" Pressing the letter o will open a new line below the current one.
" Exit insert mode after creating a new line above or below the current line.
nnoremap o o<esc>
nnoremap O O<esc>

" Center the cursor vertically when moving to the next word during a search.
nnoremap n nzz
nnoremap N Nzz

" Yank from cursor to the end of line.
nnoremap Y y$

" Map the F5 key to run a Python script inside Vim.
" We map F5 to a chain of commands here.
" :w saves the file.
" <CR> (carriage return) is like pressing the enter key.
" !clear runs the external clear screen command.
" !python3 % executes the current file with Python.
nnoremap <silent> p3 :w <CR>:!clear <CR>:!python3 % <CR>

" You can split the window in Vim by typing :split or :vsplit.
" Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+h, or CTRL+l.
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-h> <c-w>h
nnoremap <c-l> <c-w>l

" Resize split windows using arrow keys by pressing:
" CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT.
noremap <c-up> <c-w>+
noremap <c-down> <c-w>-
noremap <c-left> <c-w>>
noremap <c-right> <c-w><

" NERDTree specific mappings.
" Map the 'tree' keymap to toggle NERDTree open and close.
nnoremap tree :NERDTreeToggle<CR>

" Map 'spell' to spellcheck toggle
nnoremap <silent> sc :set spell!<CR>

nnoremap p8 :Pico8Run<CR>

nnoremap <silent> web :w !sensible-browser %<CR>

" AutoComplPop Mappings
inoremap <expr> <Down> pumvisible() ? "<C-n>" : "<Down>"
inoremap <expr> <Up> pumvisible() ? "<C-p>" : "<Up>"
inoremap <expr> <Right> pumvisible() ? "<C-y>" : "<Right>"
inoremap <expr> <CR> pumvisible() ? "<C-y>" : "<CR>"
inoremap <expr> <Left> pumvisible() ? "<C-e>" : "<Left>"

" Minimalist-TabComplete-Plugin
inoremap <expr> <Tab> TabComplete()
fun! TabComplete()
    if pumvisible()
        return "\<C-n>"
    else
        return "\<Tab>"
    endif
endfun

" Keymaps for Netrw
" Opens Netrw in the directory of the current file
nnoremap <silent> dir :Lexplore %:p:h<CR>
" Opens Netrw in the current working directory
nnoremap <silent> da :Lexplore<CR>

" Have nerdtree ignore certain files and directories.
let NERDTreeIgnore=['\.git$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.db$']

" VIMSCRIPT

" Enable the marker method of folding.
augroup filetype_vim
    autocmd!
    autocmd FileType vim setlocal foldmethod=marker
augroup END

" If the current file type is HTML, set indentation to 2 spaces.
autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab
autocmd Filetype pico8 setlocal tabstop=1 shiftwidth=1 expandtab
autocmd Filetype python setlocal tabstop=4 shiftwidth=4 expandtab

" If HTML file --> autocomplete tags
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags

" If Vim version is equal to or greater than 7.3 enable undofile.
" This allows you to undo changes to a file even after saving it.
if version >= 703
    set undodir=~/.vim/backup
    set undofile
    set undoreload=10000
endif

" You can split a window into sections by typing `:split` or `:vsplit`.
" Display cursorline and cursorcolumn ONLY in active window.
augroup cursor_off
    autocmd!
    autocmd WinLeave * set cursorline cursorcolumn
    autocmd WinEnter * set cursorline cursorcolumn
augroup END

" Use a line cursor within insert mode and a block cursor everywhere else.
"
" Reference chart of values:
"   Ps = 0  -> blinking block.
"   Ps = 1  -> blinking block (default).
"   Ps = 2  -> steady block.
"   Ps = 3  -> blinking underline.
"   Ps = 4  -> steady underline.
"   Ps = 5  -> blinking bar (xterm).
"   Ps = 6  -> steady bar (xterm).
let &t_SI = "\e[6 q"
let &t_EI = "\e[2 q"

" Highlight yank duration - from plugin
let g:highlightedyank_highlight_duration = 1000

" Set character used for line indentation
" Options include: | ¦ ┆ ┊
" let g:indentLine_char = '┆'

" Set line indentation to off by default --> toggle with :IndentLinesToggle
" let g:indentLine_enabled = 0

" TokyoNight colorscheme config
let g:airline_theme = "tokyonight"
let g:tokyonight_style = 'night' " available: night, storm
let g:tokyonight_enable_italic = 0

" Papercolor coloscheme config
" let g:airline_theme='papercolor'

" If GUI version of Vim is running set these options.
if has('gui_running')

    " Set a custom font you have installed on your computer.
    " Syntax: <font_name>\ <weight>\ <size>
    set guifont=DroidSansMono\ Nerd\ Font,\ DroidSansMono

    " Display more of the file by default.
    " Hide the toolbar.
    set guioptions-=T

    " Hide the left-side scroll bar.
    set guioptions-=L

    " Hide the right-side scroll bar.
    set guioptions-=r

    " Hide the menu bar.
    set guioptions+=m

    " Hide the bottom scroll bar.
    set guioptions-=b

    " Map the F4 key to toggle the menu, toolbar, and scroll bar.
    " <Bar> is the pipe character.
    " <CR> is the enter key.
    nnoremap <F4> :if &guioptions=~#'mTr'<Bar>
        \set guioptions-=mTr<Bar>
        \else<Bar>
        \set guioptions+=mTr<Bar>
        \endif<CR>

endif

" STATUS LINE

" Clear status line when vimrc is reloaded.
set statusline=

" Status line left side.
set statusline+=\ %F\ %M\ %Y\ %R

" Use a divider to separate the left side from the right side.
set statusline+=%=

" Status line right side.
set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%%

" Show the status on the second to last line.
set laststatus=2

" COLORS
set termguicolors
set background=dark
colorscheme tokyonight
hi Normal guibg=NONE ctermbg=NONE
hi LineNr guibg=NONE ctermbg=NONE
hi Folded guibg=NONE ctermbg=NONE
hi NonText guibg=NONE ctermbg=NONE
hi SpecialKey guibg=NONE ctermbg=NONE
hi VertSplit guibg=NONE ctermbg=NONE
hi SignColumn guibg=NONE ctermbg=NONE
hi EndOfBuffer guibg=NONE ctermbg=NONE
hi Comment guifg=#787878 ctermfg=59 cterm=italic
highlight Search guibg='#FFFF66' guifg='black'

COMMENTS