Skip to main content

a text editor

Project description

build status pre-commit.ci status

babi logo

babi

a text editor, eventually...

installation

pip install babi

babi works best in a virtualenv

why is it called babi?

I used to use the text editor nano, frequently I typo this. on a qwerty keyboard, when the right hand is shifted left by one, nano becomes babi.

babi vs. nano

here is a youtube video where I discuss the motivation for creating and using babi instead of nano:

youtube video about babi

quitting babi

currently you can quit babi by using ^X (or via esc + :q).

key combinations

these are all of the current key bindings in babi

  • ^S: save
  • ^O: save as
  • ^X: quit
  • ^P: open file
  • arrow keys: movement
  • ^A / home: move to beginning of line
  • ^E / end: move to end of line
  • ^Y / pageup: move up one page
  • ^V / pagedown: move down one page
  • ^-left / ^-right: jump by word
  • ^-home / ^-end: jump to beginning / end of file
  • M-Up / M-Down: jump to previous / next paragraph
  • ^_: jump to line number
  • selection: shift + ...: extend the current selection
    • arrow keys
    • home / end
    • pageup / pagedown
    • ^-left / ^-right
    • ^-end / ^-home
  • tab / shift-tab: indent or dedent current line (or selection)
  • ^K / ^U: cut and uncut the current line (or selection)
  • M-u / M-U or M-e: undo / redo
  • ^W: search
  • ^\: search and replace
  • ^C: show the current position in the file
  • ^-up / ^-down: scroll screen by a single line
  • M-left / M-right: go to previous / next file
  • ^Z: background
  • ^T: run linter
    • by default, runs pre-commit run --files <filename>
    • outside of a git repo will run flake8 <filename> for python files
    • ^-S-Up, ^-S-Down: navigate to previous / next error
    • M-t focus the linting panel
    • ^C, ^X: clear and close the linting panel
    • Esc, M-t: unfocus the linting panel
    • arrow keys: movement inside the linting panel
  • esc: open the command mode
    • :q: quit
    • :w: write the file
    • :wq: write the file and quit
    • :qall: quit every open file
    • :comment: comment out the current line / selection
    • :reload: reload the file contents
    • :sort: sort the file (or selection)
    • :tabsize X: set the tabsize

in prompts (search, search replace, command):

  • ^C: cancel
  • ^K: cut to end
  • ^R: reverse search

setting up syntax highlighting

syntax highlighting should work out of the box!

if you want a custom theme find a visual studio code theme, convert it to json (if it is not already json) and put it at ~/.config/babi/theme.json. a helper script is provided to make this easier: ./bin/download-theme NAME URL

keyboard shortcuts on macos

to get the most out of babi's built in keyboard shortcuts, a few settings must be changed on macos with Terminal.app:

  • in System Preferences: Keyboard > Keyboard Shortcuts > Mission Control: disable or rebind ⌃ →, ⌃ ←, ^ ↑, ^ ↓
  • in Terminal.app: Terminal > Preferences > Profiles > Keyboard:
    • check Use Option as Meta key
    • ensure the following keys are enabled:
      • ⌃ ↑: \033[1;5A
      • ⌃ ↓: \033[1;5B
      • ⌃ →: \033[1;5C
      • ⌃ ←: \033[1;5D
      • ⇧ ↑: \033[1;2A
      • ⇧ ↓: \033[1;2B
      • ⇧ →: \033[1;2C
      • ⇧ ←: \033[1;2D
      • ^ ⇧ ↑: \033[1;6A
      • ^ ⇧ ↓: \033[1;6B
      • ^ ⇧ →: \033[1;6C
      • ^ ⇧ ←: \033[1;6D

demos

most things work! here's a few screenshots

file view

this opens the file, displays it, and can be edited and can save! unknown keys are displayed as errors in the status bar. babi will scroll if the cursor goes off screen either from resize events or from movement. babi can edit multiple files. babi has a command mode (so you can quit it like vim :q!). babi also supports syntax highlighting

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

babi-1.7.0.tar.gz (46.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

babi-1.7.0-py2.py3-none-any.whl (53.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file babi-1.7.0.tar.gz.

File metadata

  • Download URL: babi-1.7.0.tar.gz
  • Upload date:
  • Size: 46.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for babi-1.7.0.tar.gz
Algorithm Hash digest
SHA256 92e90359053d1058c720d887354fdb2c1bd469c03afce6980bdd79773a4ffc82
MD5 debecc4844f52901bb79c6219e4ce569
BLAKE2b-256 e0af6f756916930a30d84179544b50a6145f6a83f26c741c830f0689d9cd4628

See more details on using hashes here.

File details

Details for the file babi-1.7.0-py2.py3-none-any.whl.

File metadata

  • Download URL: babi-1.7.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 53.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for babi-1.7.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 94c04ed61fad37e00314eaaa7ada44de30dac1c22dcc7b0dfc1e001e4cc8a9c4
MD5 306e647f203dd4d2c94ca0f1c0e23451
BLAKE2b-256 a169f242883e2610c6ea76472277fd180ea64c3e28bbf3416ae57cb86b7073c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page