A terminal file manager written in nim inspired by the awesome nnn.
The goal of nimmm
is not to replace nnn
; I just wanted to code my own
version of nnn
to my liking. nimmm
does not nearly have the same amount of
features and power than nnn
but it has enough features to be usable as a daily
driver for me.
- Support for all plaforms where
nim
andtermbox
can be installed on - Colorizing with
LS_COLORS
- Custom keymaps (see below)
- Simple selection mechanism
- Incremental search
Some functionality of nimmm
is controlled via environment variables
similar to other programs:
Environment variable | Setting |
---|---|
EDITOR |
file editor |
PAGER |
file viewer |
NIMMM_OPEN |
file opener |
NIMMM_256 |
enable 256 color mode |
Other configuration such as keybindings are configured in
$XDG_CONFIG_HOME/nimmm.conf
where $XDG_CONFIG_HOME
defaults to
~/.config
if not set.
Key | Default binding | Description |
---|---|---|
q | quit |
quit |
! | shell |
spawn shell in current directory |
j | down |
next entry |
k | up |
previous entry |
h | left |
go to the parent directory |
l | right |
navigate to directory / open file |
g | first |
first entry |
G | last |
last entry |
~ | home |
go to home directory |
. | toggle-hidden |
toggle display of hidden entries |
/ | search |
start searching |
Esc | end-search |
stop searching |
e | edit |
edit file in $EDITOR |
p | pager |
view file in $PAGER |
r | rename |
rename file/directory |
Space | select |
select / deselect current entry |
a | select-all |
select all entries in current directory |
s | select-none |
clear selection |
X | delete |
delete selected entries |
P | copy |
copy selected entries |
V | move |
move selected entries |
f | new-file |
create (touch) a new file |
d | new-dir |
create a new directory |
t | new-tab |
new tab |
w | close-tab |
close tab |
1..0 | tab-x |
go to tab 1..10 |
If you prefer more Emacs-oriented movement keybindings, you can add this to your configuration file:
[Keybindings]
h=none
j=none
k=none
l=none
n=down
p=up
f=right
b=left
- Help page
The main dependency nimmm needs is the nim
development toolchain, i.e. the
nim
compiler and the nimble
package manager. A C compiler (gcc, clang, etc.)
or a C++ compiler is necessary for compiling the generated C/C++ code to
binaries.
Apart from that, these libraries are required:
termbox-devel
orlibtermbox-dev
is required in order for the terminal user interface to work.
Dependency | Use |
---|---|
cp , mv , rm , mkdir , touch |
nimmm delegates all operations on files and directories to these utilities to save all the error-handling and permission-checking work. These utilities should (hopefully) be on your UNIX system |
$SHELL or fallback /bin/sh |
a shell |
$EDITOR or fallback vi |
an editor |
$PAGER or fallback less |
a pager |
$NIMMM_OPEN or fallback xdg-open |
a file opener |
$ git clone https://github.com/joachimschmidt557/nimmm
$ cd nimmm
$ nimble install
$ nimble install nimmm
$ nix-env -i nimmm
nimmm
is licensed under the GNU General Public License v3.0 only.