Kakoune

·

3 min read

I haven't had a long journey to find the terminal text editor for me, but that doesnt dull the importance of finding the correct one. Most people who find themselves on the weird end of an ssh tunnel and feel extremely out of their element usually get pointed to the same editors: vi and vim. Now I won't debate the power these editors have (along with the more-modern neovim), but it never felt right to me.

Modal

A common term you'll see with these terminal editors is "modal", meaning having modes. Kakoune has two basic ones: select and insert.

Select is essentially how you traverse and get around your file. Commands such as g to "go" to different places, y to "yank" or copy selections, p to paste from your buffers, or m to select matching symbols, are extremely useful and are the way to quickly jump throughout your files and prepare your edits. Select mode is also where you are able to execute commands such as save, exit, and configuring your editor's behaviors. All of these are prefixed with ":".

Insert is the action mode. This is where you can insert text. Yep, this one is much more straightforward.

Grammar

Kakoune takes an approach to editor commands slightlty differently to its kin. Vim requires you to select a "verb" before defining the "subject". By this I mean you must tell the editor you intend to delete something before telling it what to delete. Kakoune is the opposite. It takes advantage of multiple cursors to visualize and allow you to tweak your selections before ever deciding what to do with them. This means, you can adjust your selection to grab the exact words or command declaration before telling kakoune to delete it. This may just be a difference of opinion but it is much more intuitive for me.

Bittersweet

While kakoune gives you a deeply configurable and extendable editor, it is lacking in some ways. The only ones I've really found to be abrasive, though, are the lack of tree-sitter/lsp support by default ( lsp can be used somewhat through a third-party plugin) and the plugin availability itself.

Tree-sitters are something I don't plan on getting into in this log, but suffice it to say it acts as a generic interface (and thus allows kakoune to use tree-sitters that were made for other editors) to allow robust, fast syntax highlighting, and is not supported by kakoune, but have decent support in neovim and included support in helix (a candidate for my future editor, once plugins are worked out).

Plugins are, as you'd expect, packages that extend the editor. Unfortunately, either due to difficulty with writing kakoune plugins or the smaller community kakoune has in comparison to vim or emacs, the community for plugin development is noticeably small.

I think, if you're in your infancy of terminal editors (or you're not completely baked into using the one you have), its worth playing around with these editors. Some may say "well, VSCode does all of that and its a GUI" or "Sublime is better", but neither of these editors will behave the way you expect on a remote linux server that you just connected to over ssh; and they may work with docker containers but they are definitely not intuitive in doing so. Learn a terminal text editor, give your brain the time to properly understand it, and you'll be surprised how productive you can be out of your terminal, and how little you end up using VSCode.

Thus ends my Ted talk.

Possible up next:

  • I'd like to do a quick "how I use git" that may not be a great all-inclusive training, but may allow some of you to learn a small quirk?

Did you find this article valuable?

Support Convergence by becoming a sponsor. Any amount is appreciated!