This section keeps an up-to-date version of the default config-file.
[license] path_to_license_file -- path to license file (e.g. /Users/michael/Desktop/personal.txt, or leave empty for non-commercial version)
[editor] font SF Mono -- use any installed font or place in /Application Support/Hackerman Text/fonts font_weight light -- light, normal, medium, bold font_size 15 line_extra_height 2 tab_width 4 theme hackerman -- hackerman, borland, light, focus, focus-dark, nostromo, writer, github-dark, kujukuju, dark, ayu adaptive_theme light, hackerman -- set theme to "adaptive" to use auto_indent true auto_complete true file_explorer_root -- absolute path to folder to set as root on startup, default is Desktop file_types_to_exclude .dmg, .app, .git, .ttf, .dylib, .so, .venv, .pyc, .zip, .egg, .DS_Store files_to_open_on_startup quickstart.org, -- list of absolute paths to files to open on startup, e.g. todo.org, notes.txt, work.py inline_command_in_files txt, md, org, inline_shell_start_symbol % scripts_enabled false allow_unsafe_scripts false -- allow imports click_on_links false -- if false, use inline_command to activate -- ui show_line_numbers true show_scrollbar true show_minimap false show_indent_guides true show_annotations true show_ui_borders true -- cursor cursor_width 2 cursor_extra_height 8 cursor_as_block false cursor_line_highlight false cursor_blink false cursor_blink_period 530 -- 530 is default cursor_neon_effect false -- experimental -- statusbar show_line_info true show_model_metrics true show_active_lexer true -- misc ui_font SF Mono ui_font_weight -- leave empty for default, normal ui_font_size -- leave empty for default, 12pt scrollbar_width 8 minimap_width 64 open_on_largest_screen true eol_mode lf -- crlf, cr, lf eol_symbols_visible false terminal_to_use "Terminal" -- for open in terminal shortcuts path_to_shell /bin/zsh -- for inline shell commands window_opacity 1 selection_opacity 0.2 indent_guides_opacity 0.1 whitespace_opacity 0.1 unsaved_symbol * whitespace_symbol ▪ vertical_rulers -- list of columns -- experimental wrap_word txt, md, -- highlight_line_on_jump false tabs_over_spaces false font_ligatures false -- requires restart path_to_scripts_file -- path to external scripts file, requires restart
[keybinds] -- Important: Use Comma, Period, Plus, Minus instead of symbols ,.+- new_file Cmd + N new_window Cmd + Shift + N open_file Cmd + O save_file Cmd + S save_file_as Cmd + Shift + S close_file Cmd + W close_other_files Cmd + Shift + W reopen_last_closed_file Cmd + Shift + T fold_line Cmd + L fold_all Cmd + Shift + L code_completion Cmd + K line_comment Cmd + / zoom_in Cmd + =, Cmd + Plus zoom_out Cmd + _, Cmd + Minus toggle_split_editor Cmd + \ show_file_explorer Cmd + P -- show_outline_panel Cmd + Shift + E show_buffer_explorer Control + Tab show_function_explorer Cmd + Shift + P open_terminal_at_file Cmd + T open_config_file open_scripts_file reveal_in_finder select_all Cmd + A undo Cmd + Z, Control + / redo Cmd + Shift + Z, Control + Shift + / lowercase Option + L uppercase Option + U cancel Escape, Control + G newline Return, Cmd + Return, Control + J newline_at_end_of_line Shift + Return tab Tab backtab Shift + Tab center_on_cursor Control + L line_indent Cmd + ] line_unindent Cmd + [ selection_duplicate move_line_up move_line_down select_next_match Cmd + E unselect_last_match Cmd + Shift + E open_file_in_new_window copy_path_to_file Cmd + Shift + C reset_window_position toggle_read_only toggle_newspaper_scroll select_matches show_license_info open_diff_in_new_buffer go_to_line tear_off_buffer reset_zoom Cmd + 0 replace_all_eol replace_tabs_with_spaces toggle_indent_guides plain_text_lexer auto_detect_lexer tab_width_2_spaces tab_width_4_spaces indent_with_spaces indent_with_tabs find_in_file Cmd + F show_search_explorer Cmd + Shift + F accept_autocomplete python_eval_line Cmd + Option + E -- this is used to execute org-mode code, run shell commands, and evaluate expressions inline_command Cmd + Shift + Return -- Native MacOS keys bindings for document are rebound to para by default due to misclick prone document_start Option + Comma document_start_extend Option + Shift + Comma document_end Option + Period document_end_extend Option + Shift + Period home home_extend char_left Left, Control + B char_left_extend Shift + Left, Control + Shift + B char_right Right, Control + F char_right_extend Shift + Right, Control + Shift + F line_up Up, Control + P line_up_extend Shift + Up, Control + Shift + P line_down Down, Control + N line_down_extend Shift + Down, Control + Shift + N line_up_start Option + Up line_up_start_extend Option + Shift + Up line_down_end Option + Down line_down_end_extend Option + Shift + Down line_start Cmd + Left, Control + A line_start_extend Cmd + Shift + Left, Control + Shift + A line_end Cmd + Right, Control + E line_end_extend Cmd + Shift + Right, Control + Shift + E line_scroll_up Control + Up line_scroll_down Control + Down line_add_caret_up Control + Shift + Up line_add_caret_down Control + Shift + Down duplicate_line Cmd + Shift + D transpose_line reverse_line copy Cmd + C cut Cmd + X paste Cmd + V paragraph_up Cmd + Up, Option + A -- MacOS default is Option+Up paragraph_up_extend Cmd + Shift + Up, Option + Shift + A -- MacOS default is Option+Shift+Up paragraph_down Cmd + Down, Option + E -- MacOS default is Option+Down paragraph_down_extend Cmd + Shift + Down, Option + Shift + E -- MacOS default is Option+Shift+Down word_left Option + Left, Option + B word_left_extend Option + Shift + Left, Option + Shift + B word_right word_right_extend word_left_end word_left_end_extend word_right_end Option + Right, Option + F word_right_end_extend Option + Shift + Right, Option + Shift + F word_part_left Control + Left word_part_left_extend Control + Shift + Left word_part_right Control + Right word_part_right_extend Control + Shift + Right page_up Option + V page_up_extend Option + Shift + V page_down Control + V page_down_extend Control + Shift + V stuttered_page_up stuttered_page_down stuttered_page_up_extend stuttered_page_down_extend delete Backspace delete_not_newline Shift + Backspace delete_right Cmd + D, Control + D -- delete selection if selection is not empty delete_word_left Option + Backspace, Control + Backspace delete_word_right Option + D delete_line Cmd + Shift + K delete_line_left Cmd + Backspace, Control + Shift + Backspace delete_line_right Control + K delete_paragraph_left Option + Shift + K delete_paragraph_right Option + K -- pane navigation focus_main_editor Cmd + Comma focus_split_editor Cmd + Period previous_tab Cmd + Shift + Comma next_tab Cmd + Shift + Period -- quick switch buffer switch_to_buffer_1 Cmd + 1 switch_to_buffer_2 Cmd + 2 switch_to_buffer_3 Cmd + 3 switch_to_buffer_4 Cmd + 4 switch_to_buffer_5 Cmd + 5 switch_to_buffer_6 Cmd + 6 switch_to_buffer_7 Cmd + 7 switch_to_buffer_8 Cmd + 8 switch_to_buffer_9 Cmd + 9
Place key bindings for custom editor commands in the [user] section.
[user] -- Place key bindings to your own functions here -- function_name Modifier + Key toggle_system_appearance build_and_run
This is the default hackerman theme.
Define a new theme by giving it a name, such as [my-custom-theme], and adding colors to the below keys.
Many keys are optional.
[hackerman] background #102329 -- #16181C foreground #87919D text_color #FFFFFF cursor #69EBFA default #FFFFFF keyword #E67D74 class #D0C5A9 name #D0C5A9 lambda #D699B5 string #D4BC7D number #D699B5 operator #E0AD82 comment #87919D special #69EBFA type #9ECEF5 boolean #D699B5 builtin #E0AD82 _highlight #D4BC7D _link #9ECEF5, #9ECEF5 -- error #FC4646, #FC4646 -- traffic light red -- warning #FCAF24, #FCAF24 -- traffic light yellow -- success #28C032, #28C032 -- traffic light green -- _selection -- _bold -- _italic -- _underline -- _verbatim -- _strike -- _code -- _link -- _todo -- _annotation -- _title_bar -- _status_bar
github-dark
[github-dark] background #0F1217 foreground #868D97 text_color #E3E9EF cursor #59C2FF default #E3E9EF keyword #FB6E65 class #EE9B52 name #D2A8FF lambda #D2A8FF string #A5D6FF number #77BDFB operator #77BDFB comment #9198A1 special #79C0FF type #79C0FF boolean #79C0FF builtin #77BDFB _error #FC4646, #FC4646
This section keeps a list of available built-in editor commands.
Accept the first item in the autocomplete popup.
Auto detect lexer based on file extension.
Perform reverse tab.
Cancel the current operation.
Center the view on the cursor.
Move caret left one character.
Move caret left one character, extending selection.
Move caret right one character.
Move caret right one character, extending selection.
Close the current file.
Close all files except the current one.
Code completion using LLM.
Copy the selected text to the clipboard.
Copy the path to the file to the clipboard.
Cut the selected text to the clipboard.
Delete the character at the caret.
Delete the current line.
Delete the line to the left of the caret.
Delete the line to the right of the caret.
Delete the character at the caret if it is not a newline.
Delete the paragraph to the left of the caret.
Delete the paragraph to the right of the caret.
Delete the character to the right of the caret.
Delete the word to the left of the caret.
Delete the word to the right of the caret.
Move the cursor to the end of the document.
Move the cursor to the end of the document and extend the selection.
Move the cursor to the start of the document.
Move the cursor to the start of the document and extend the selection.
Duplicate the current line.
Find a string in the current file.
Focus the main editor.
Focus the split editor.
Fold all foldable lines at current line’s fold level.
Fold the current line.
Go to a specific line in the file.
Move the cursor to the start of the line.
Move the cursor to the start of the line and extend the selection.
Set the indentation to use spaces. This is for current buffer only and not persistent on close.
Set the indentation to use tabs. This is for current buffer only and not persistent on close.
Execute inline command.
Add a cursor below the current cursor.
Add a cursor above the current cursor.
Toggle line comment for the current line or selection.
Move the cursor down one line.
Move the cursor down one line and to the end of the line.
Move the cursor down one line and to the end of the line and extend the selection.
Move the cursor down one line and extend the selection.
Move the cursor to the end of the line.
Move the cursor to the end of the line and extend the selection.
Indent selected lines.
Scroll the view down one line.
Scroll the view up one line.
Move caret to the start of the line.
Move caret to the start of the line, extending selection.
Unindent selected lines.
Move the cursor up one line.
Move the cursor up one line and extend the selection.
Move the cursor up one line and to the start of the line.
Move the cursor up one line and to the start of the line and extend the selection.
Convert the selected text to lowercase.
Move the cursor to the next empty line below the current line.
Move the current line down.
Move the current line up.
Move the cursor to the next empty line above the current line.
Open a new file.
Open a new window.
Insert a newline character.
Insert a newline at the end of the current line.
Switch to the next tab.
Open the config file in the current window.
Open the diff for the current file in a new buffer.
Open a file in the current window.
Open the current file in a new window.
Open the scripts file in the current window.
Open the terminal at the file.
Move caret down one page.
Move caret down one page, extending selection.
Move caret up one page.
Move caret up one page, extending selection.
Move the cursor to the end of the paragraph.
Move the cursor to the end of the paragraph and extend the selection.
Move the cursor to the beginning of the paragraph.
Move the cursor to the beginning of the paragraph and extend the selection.
Paste the text from the clipboard.
Switch to the previous tab.
Evaluate the current line as Python code.
Read file into editor.
Redo the last action.
Reopen the last closed file.
Replace all EOLs with the current EOL mode.
Replace all tabs with spaces in the document.
Reset the window position.
Reset the zoom level to 0.
Reveal the file in the finder.
Reverse the current line.
Save the current file.
Save the current file as a new file.
Selects all text in the editor.
Select all matches of the current word.
Selects the next match of the current selection.
Duplicate the selection.
Show the about dialog.
Show the buffer explorer.
Show the file explorer.
Show the function explorer.
Show the license information.
Show the search explorer.
Move caret down one page, stuttered.
Move caret down one page, stuttered, extending selection.
Move caret up one page, stuttered.
Move caret up one page, stuttered, extending selection.
Switch to the first buffer.
Switch to the second buffer.
Switch to the third buffer.
Switch to the fourth buffer.
Switch to the fifth buffer.
Switch to the sixth buffer.
Switch to the seventh buffer.
Switch to the eighth buffer.
Switch to the ninth buffer.
Insert a tab character.
Set the tab width to 2 spaces. This is for current buffer only and not persistent on close.
Set the tab width to 4 spaces. This is for current buffer only and not persistent on close.
Toggle the indentation guides. This is for current buffer only and not persistent on close.
Toggle the split editor mode.
Transpose the current line.
Undo the last action.
Unselect the last match.
Convert the selected text to uppercase.
Move caret left one word.
Move caret left one word.
Move caret left one word, extending selection.
Move caret left one word, extending selection.
Move caret left one word part.
Move caret left one word part, extending selection.
Move caret right one word part.
Move caret right one word part, extending selection.
Move caret right one word.
Move caret right one word.
Move caret right one word, extending selection.
Move caret right one word, extending selection.
Zoom in by 1 point.
Zoom out by 1 point.
This section keeps an up-to-date version of the default scripts-file. Use this as an example or base to build your own custom editor commands. See how to add key bindings to custom functions in Keybinds.
# default scripts-file for Hackerman Text
def toggle_system_appearance(self):
# run appscript on macos
script = """
tell application "System Events"
tell appearance preferences
set dark mode to not dark mode
end tell
end tell
"""
osascript(script)
def build_and_run(self):
# example build commands based on file_type
BUILD_MAP = {
"py": f"python { self.file_name }",
"tex": f"pdflatex { self.file_name } -o { self.file_name.split('.')[0] }.pdf",
"org": f"pandoc -f org -t pdf { self.file_name } -o { self.file_name.split('.')[0] }.pdf --pdf-engine=pdflatex",
"md": f"pandoc -f md -t pdf { self.file_name } -o { self.file_name.split('.')[0] }.pdf --pdf-engine=pdflatex",
}
if self.file_type not in BUILD_MAP:
show_message(f"No build command for { self.file_name } files.")
return
run_in_terminal(BUILD_MAP[self.file_type])