Files
bim/README.md

79 lines
3.0 KiB
Markdown

# 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
```