# 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: ```text 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: ```bash ./bim path/to/file ```