I do have a few virtual servers and for those I do try to keep the number of installed packages low, less packages to keep security updated that way. And while I’m able to use both vi and nano on a typewriter level I don’t feel comfortable in them. Emacs on the other hand gives me keybindings I have learned and split windows, but it is a rather large install for occasionally editing a few config files. I have tested a few editors installation footprint. I only tested editors that could be apt installed, as they are easy to install and keep updated. The testing was done using a freshly installed Debian stable (Debian 11) with nothing selected in tasksel. This used to give a very bare install, but these days they “bloat” the install with ’less’, ‘ping’ and maybe other usefull default programs. Anyway for reference the disk usage (ext4) was reported as 1.2G, and I proceeded to bloat the install further by installing openssh-server The following additional packages will be installed: dbus libcbor0 libdbus-1-3 libfido2-1 libpam-systemd libwrap0 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 ncurses-term openssh-client openssh-sftp-server runit-helper xauth Suggested packages: default-dbus-session-bus | dbus-session-bus keychain libpam-ssh monkeysphere ssh-askpass molly-guard ufw The following NEW packages will be installed: dbus libcbor0 libdbus-1-3 libfido2-1 libpam-systemd libwrap0 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 ncurses-term openssh-client openssh-server openssh-sftp-server runit-helper xauth 0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded. Need to get 4,142 kB of archives. After this operation, 16.5 MB of additional disk space will be used. With any luck the editors won’t depend on any of those libraries, and even if they did almost all my servers have openssh-sever installed anyway. Summary of package and disk usage nano, 0 packages and 0 MB vi, 0 packages and 0 MB mg, 1 package and 0.25 MB zile, 2 packages and 0.83 MB ne, 2 packages and 2.4 MB mle, 5 packages and 3.5 MB tilde, 8 packages and 6.1 MB micro, 7 packages and 15.6 MB vim, 3 packages and 36.3 MB vim-nox, 35 packages and 147 MB emacs-nox, 45 packages and 195 MB yi, 103 packages and 1173 MB Notes mg Common key binding for saving, search and replace works Has splits but only vertically it seems zile GNU Zile is a text editor development kit So maybe it won’t stay as a text editor? Besides mg is smaller.. Common key binding for saving, search and replace works Has splits but only vertically it seems tilde Maybe a bit overkill for configuration file editing Has splits in both directions Syntax highlighting Hard to tell which split has focus Mouse support Convenient menu helping one learn the shortcuts micro Seems more advanced than tilde, with a higher learning curve. Again maybe a bit overkill for my use case. Has splits in both directions Syntax highlighting Mouse support vi Does do splits I do hate command mode Installation details of each program vim The following additional packages will be installed: libgpm2 vim-runtime Suggested packages: gpm ctags vim-doc vim-scripts The following NEW packages will be installed: libgpm2 vim vim-runtime 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 7,756 kB of archives. After this operation, 36.3 MB of additional disk space will be used. vim-nox The following additional packages will be installed: ca-certificates fonts-lato javascript-common libgdbm-compat4 libgdbm6 libgpm2 libjs-jquery liblua5.2-0 libmpdec3 libperl5.32 libpython3.9 libpython3.9-minimal libpython3.9-stdlib libruby2.7 libsqlite3-0 libtcl8.6 libyaml-0-2 media-types openssl perl perl-modules-5.32 rake ruby ruby-minitest ruby-net-telnet ruby-power-assert ruby-rubygems ruby-test-unit ruby-xmlrpc ruby2.7 rubygems-integration unzip vim-runtime zip Suggested packages: apache2 | lighttpd | httpd gdbm-l10n gpm tcl8.6 perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make libtap-harness-archive-perl ri ruby-dev bundler cscope vim-doc The following NEW packages will be installed: ca-certificates fonts-lato javascript-common libgdbm-compat4 libgdbm6 libgpm2 libjs-jquery liblua5.2-0 libmpdec3 libperl5.32 libpython3.9 libpython3.9-minimal libpython3.9-stdlib libruby2.7 libsqlite3-0 libtcl8.6 libyaml-0-2 media-types openssl perl perl-modules-5.32 rake ruby ruby-minitest ruby-net-telnet ruby-power-assert ruby-rubygems ruby-test-unit ruby-xmlrpc ruby2.7 rubygems-integration unzip vim-nox vim-runtime zip 0 upgraded, 35 newly installed, 0 to remove and 0 not upgraded. Need to get 31.5 MB of archives. After this operation, 147 MB of additional disk space will be used. emacs-nox The following additional packages will be installed: alsa-topology-conf alsa-ucm-conf ca-certificates emacs-bin-common emacs-common emacs-el exim4-base exim4-config exim4-daemon-light gsasl-common guile-2.2-libs install-info libasound2 libasound2-data libevent-2.1-7 libfribidi0 libgc1 libgnutls-dane0 libgpm2 libgsasl7 libidn11 liblcms2-2 libldap-2.4-2 libldap-common libltdl7 libmailutils7 libmariadb3 libmpdec3 libntlm0 libpython3.9 libpython3.9-minimal libpython3.9-stdlib libsasl2-2 libsasl2-modules libsasl2-modules-db libsqlite3-0 libunbound8 mailutils mailutils-common mariadb-common media-types mysql-common openssl psmisc Suggested packages: emacs-common-non-dfsg exim4-doc-html | exim4-doc-info eximon4 file spf-tools-perl swaks libasound2-plugins alsa-utils dns-root-data gpm liblcms2-utils libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql mailutils-mh mailutils-doc The following NEW packages will be installed: alsa-topology-conf alsa-ucm-conf ca-certificates emacs-bin-common emacs-common emacs-el emacs-nox exim4-base exim4-config exim4-daemon-light gsasl-common guile-2.2-libs install-info libasound2 libasound2-data libevent-2.1-7 libfribidi0 libgc1 libgnutls-dane0 libgpm2 libgsasl7 libidn11 liblcms2-2 libldap-2.4-2 libldap-common libltdl7 libmailutils7 libmariadb3 libmpdec3 libntlm0 libpython3.9 libpython3.9-minimal libpython3.9-stdlib libsasl2-2 libsasl2-modules libsasl2-modules-db libsqlite3-0 libunbound8 mailutils mailutils-common mariadb-common media-types mysql-common openssl psmisc 0 upgraded, 45 newly installed, 0 to remove and 0 not upgraded. Need to get 52.7 MB of archives. After this operation, 195 MB of additional disk space will be used. zile The following additional packages will be installed: libgc1 The following NEW packages will be installed: libgc1 zile 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 488 kB of archives. After this operation, 874 kB of additional disk space will be used. micro The following additional packages will be installed: libice6 libsm6 libxmu6 libxt6 x11-common xclip The following NEW packages will be installed: libice6 libsm6 libxmu6 libxt6 micro x11-common xclip 0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded. Need to get 4,444 kB of archives. After this operation, 15.6 MB of additional disk space will be used. tilde The following additional packages will be installed: libgpm2 libt3config0 libt3highlight2 libt3key1 libt3widget2 libt3window0 libtranscript1 Suggested packages: gpm The following NEW packages will be installed: libgpm2 libt3config0 libt3highlight2 libt3key1 libt3widget2 libt3window0 libtranscript1 tilde 0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Need to get 1,458 kB of archives. After this operation, 6,222 kB of additional disk space will be used. ne The following additional packages will be installed: ne-doc The following NEW packages will be installed: ne ne-doc 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 892 kB of archives. After this operation, 2,481 kB of additional disk space will be used. mle The following additional packages will be installed: fzf liblua5.3-0 libtermbox1 tree Suggested packages: universal-ctags perl The following NEW packages will be installed: fzf liblua5.3-0 libtermbox1 mle tree 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 1,165 kB of archives. After this operation, 3,618 kB of additional disk space will be used. yi The following additional packages will be installed: binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-10 fontconfig-config fonts-dejavu-core gcc gcc-10 ghc libasan6 libatomic1 libbinutils libbsd-dev libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libffi-dev libfontconfig1 libgcc-10-dev libgd3 libghc-ansi-terminal-dev libghc-attoparsec-dev libghc-base-orphans-dev libghc-blaze-builder-dev libghc-colour-dev libghc-data-default-class-dev libghc-data-default-dev libghc-data-default-instances-containers-dev libghc-data-default-instances-dlist-dev libghc-data-default-instances-old-locale-dev libghc-dlist-dev libghc-dynamic-state-dev libghc-exceptions-dev libghc-fingertree-dev libghc-fmlist-dev libghc-generic-deriving-dev libghc-hashable-dev libghc-hclip-dev libghc-integer-logarithms-dev libghc-listlike-dev libghc-microlens-dev libghc-microlens-ghc-dev libghc-microlens-mtl-dev libghc-microlens-platform-dev libghc-microlens-th-dev libghc-old-locale-dev libghc-oo-prototypes-dev libghc-parallel-dev libghc-pointedlist-dev libghc-primitive-dev libghc-process-extras-dev libghc-regex-base-dev libghc-regex-tdfa-dev libghc-scientific-dev libghc-split-dev libghc-strict-dev libghc-th-abstraction-dev libghc-transformers-base-dev libghc-transformers-compat-dev libghc-unix-compat-dev libghc-unordered-containers-dev libghc-utf8-string-dev libghc-vector-dev libghc-vty-dev libghc-xdg-basedir-dev libghc-yi-core-dev libghc-yi-frontend-vty-dev libghc-yi-keymap-emacs-dev libghc-yi-language-dev libghc-yi-misc-modes-dev libghc-yi-mode-haskell-dev libghc-yi-rope-dev libgmp-dev libgmpxx4ldbl libgomp1 libisl23 libitm1 libjbig0 libjpeg62-turbo liblsan0 libmd-dev libmpc3 libmpfr6 libncurses-dev libncurses5-dev libnsl-dev libquadmath0 libtiff5 libtirpc-dev libtsan0 libubsan1 libwebp6 libxpm4 linux-libc-dev manpages manpages-dev Suggested packages: binutils-doc cpp-doc gcc-10-locales gcc-multilib make autoconf automake libtool flex bison gdb gcc-doc gcc-10-multilib gcc-10-doc perl ghc-prof ghc-doc haskell-doc llvm-11 glibc-doc libgd-tools libghc-ansi-terminal-doc libghc-ansi-terminal-prof libghc-attoparsec-doc libghc-attoparsec-prof libghc-base-orphans-doc libghc-base-orphans-prof libghc-blaze-builder-doc libghc-blaze-builder-prof libghc-colour-doc libghc-colour-prof libghc-data-default-class-doc libghc-data-default-class-prof libghc-data-default-doc libghc-data-default-prof libghc-data-default-instances-containers-doc libghc-data-default-instances-containers-prof libghc-data-default-instances-dlist-doc libghc-data-default-instances-dlist-prof libghc-data-default-instances-old-locale-doc libghc-data-default-instances-old-locale-prof libghc-dlist-doc libghc-dlist-prof libghc-dynamic-state-doc libghc-dynamic-state-prof libghc-exceptions-doc libghc-exceptions-prof libghc-fingertree-doc libghc-fingertree-prof libghc-fmlist-doc libghc-fmlist-prof libghc-generic-deriving-doc libghc-generic-deriving-prof libghc-hashable-doc libghc-hashable-prof xclip libghc-hclip-doc libghc-hclip-prof libghc-integer-logarithms-doc libghc-integer-logarithms-prof libghc-listlike-doc libghc-listlike-prof libghc-microlens-doc libghc-microlens-prof libghc-microlens-ghc-doc libghc-microlens-ghc-prof libghc-microlens-mtl-doc libghc-microlens-mtl-prof libghc-microlens-platform-doc libghc-microlens-platform-prof libghc-microlens-th-doc libghc-microlens-th-prof libghc-old-locale-doc libghc-old-locale-prof libghc-oo-prototypes-doc libghc-oo-prototypes-prof libghc-parallel-doc libghc-parallel-prof libghc-pointedlist-doc libghc-pointedlist-prof libghc-primitive-doc libghc-primitive-prof libghc-process-extras-doc libghc-process-extras-prof libghc-regex-base-doc libghc-regex-base-prof libghc-regex-tdfa-doc libghc-regex-tdfa-prof libghc-scientific-doc libghc-scientific-prof libghc-split-doc libghc-split-prof libghc-strict-doc libghc-strict-prof libghc-th-abstraction-doc libghc-th-abstraction-prof libghc-transformers-base-doc libghc-transformers-base-prof libghc-transformers-compat-doc libghc-transformers-compat-prof libghc-unix-compat-doc libghc-unix-compat-prof libghc-unordered-containers-doc libghc-unordered-containers-prof libghc-utf8-string-doc libghc-utf8-string-prof libghc-vector-doc libghc-vector-prof libghc-vty-doc libghc-vty-prof libghc-xdg-basedir-doc libghc-xdg-basedir-prof libghc-yi-core-doc libghc-yi-core-prof libghc-yi-frontend-vty-doc libghc-yi-frontend-vty-prof libghc-yi-keymap-emacs-doc libghc-yi-keymap-emacs-prof libghc-yi-language-doc libghc-yi-language-prof libghc-yi-misc-modes-doc libghc-yi-misc-modes-prof libghc-yi-mode-haskell-doc libghc-yi-mode-haskell-prof libghc-yi-rope-doc libghc-yi-rope-prof gmp-doc libgmp10-doc libmpfr-dev ncurses-doc man-browser The following NEW packages will be installed: binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-10 fontconfig-config fonts-dejavu-core gcc gcc-10 ghc libasan6 libatomic1 libbinutils libbsd-dev libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libffi-dev libfontconfig1 libgcc-10-dev libgd3 libghc-ansi-terminal-dev libghc-attoparsec-dev libghc-base-orphans-dev libghc-blaze-builder-dev libghc-colour-dev libghc-data-default-class-dev libghc-data-default-dev libghc-data-default-instances-containers-dev libghc-data-default-instances-dlist-dev libghc-data-default-instances-old-locale-dev libghc-dlist-dev libghc-dynamic-state-dev libghc-exceptions-dev libghc-fingertree-dev libghc-fmlist-dev libghc-generic-deriving-dev libghc-hashable-dev libghc-hclip-dev libghc-integer-logarithms-dev libghc-listlike-dev libghc-microlens-dev libghc-microlens-ghc-dev libghc-microlens-mtl-dev libghc-microlens-platform-dev libghc-microlens-th-dev libghc-old-locale-dev libghc-oo-prototypes-dev libghc-parallel-dev libghc-pointedlist-dev libghc-primitive-dev libghc-process-extras-dev libghc-regex-base-dev libghc-regex-tdfa-dev libghc-scientific-dev libghc-split-dev libghc-strict-dev libghc-th-abstraction-dev libghc-transformers-base-dev libghc-transformers-compat-dev libghc-unix-compat-dev libghc-unordered-containers-dev libghc-utf8-string-dev libghc-vector-dev libghc-vty-dev libghc-xdg-basedir-dev libghc-yi-core-dev libghc-yi-frontend-vty-dev libghc-yi-keymap-emacs-dev libghc-yi-language-dev libghc-yi-misc-modes-dev libghc-yi-mode-haskell-dev libghc-yi-rope-dev libgmp-dev libgmpxx4ldbl libgomp1 libisl23 libitm1 libjbig0 libjpeg62-turbo liblsan0 libmd-dev libmpc3 libmpfr6 libncurses-dev libncurses5-dev libnsl-dev libquadmath0 libtiff5 libtirpc-dev libtsan0 libubsan1 libwebp6 libxpm4 linux-libc-dev manpages manpages-dev yi 0 upgraded, 103 newly installed, 0 to remove and 0 not upgraded. Need to get 141 MB of archives. After this operation, 1,173 MB of additional disk space will be used. mg The following NEW packages will be installed: mg 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 108 kB of archives. After this operation, 261 kB of additional disk space will be used.