bim

bim is a tiny Vim-like editor written in Bash.

This is an early prototype, not a full Vim replacement. It starts in command mode and supports:

  • i insert before the cursor
  • a append after the cursor
  • I insert at the beginning of the line
  • A append at the end of the line
  • arrow keys, plus h, j, k, l
  • w move forward by word
  • b move backward by word
  • e move to the end of the current or next word
  • ge move backward to the end of the previous word
  • G go to the last line, or a counted line such as 10G
  • gg go to the first line, or a counted line such as 10gg
  • ^ move to the first non-blank character on the line
  • x delete the character under the cursor
  • dd delete the current line
  • d$ or D delete from the cursor to the end of the line
  • dw delete forward by word
  • db delete backward by word
  • yw yank forward by word
  • yb yank backward by word
  • y$ yank from the cursor to the end of the line
  • cw change word
  • cc change the current line
  • C change from the cursor to the end of the line
  • s substitute the character under the cursor
  • r replace the character under the cursor
  • yy yank the current line
  • p paste line-wise yanks/deletes below the cursor, or character-wise yanks/deletes after the cursor
  • J join the current line with the next line
  • o open a new line below and enter insert mode
  • O open a new line above and enter insert mode
  • u undo the last change
  • . repeat the last change
  • /pattern, ?pattern, n, and N for literal text search
  • numeric prefixes for common commands, such as 2dd, 20yy, 3p, 5j, 4x, 5w, 5dw, 3rX, and 2s
  • Esc return to command mode
  • Ctrl+G show file, modified state, line, and column info
  • ,name then Enter run a command defined in ~/.bimrc and insert its output
  • :w, :w path, :q, :q!, :wq, and :wq path

There is no persistent ruler/status line. The bottom line is used only for commands, messages, and explicit Ctrl+G file info.

~/.bimrc commands

bim can load simple command shortcuts from ~/.bimrc. Each non-empty, non-comment line is a command name, an equals sign, and the shell command to run:

date=date +'%A, %B %d, %Y'
uuid=uuidgen

In command mode, type ,date then Enter to run the configured date command and insert its standard output at the cursor. Esc cancels a pending command, and Backspace edits it before it runs. bim appends one space after inserted command output so short snippets are ready for continued typing.

Commands are not run when bim starts. They only run when invoked explicitly with ,name. bim does not source ~/.bimrc; it parses command definitions as data. For safety, ~/.bimrc must be a regular file owned by the current user, must not be a symlink, and must not be writable by group or other users. Command names may contain letters, digits, underscores, and hyphens, and must start with a letter or underscore.

Run it with:

./bim path/to/file
S
Description
No description provided
Readme WTFPL 62 KiB
Languages
Shell 100%