Vim
Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. The way that you interact with it make it more than just a text editor (or not), a way of interacting with your entire computer.
Using it, your understanding of how to interact with a computer may change. And not only for editing text, but in how you manage your entire system, from the window manager, till your general workflow.
You can find a comprehensive list of applications using Vim keybindings in the The Keybindings Everywhere - The Ultimate List.
Some configuration tips …
Add the pluggin to your .vimrc file:
call plug#begin(globalVimfiles.'/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
Install the plugin:
:PlugInstall
Install java extension:
:CocInstall coc-java