33
votes
What editor do you use?
Hey y'all, first time actually posting something here! Just curious what editor people use, whether its for coding, writing, or just the occasional note, whatever. I've gone through most of the well-known ones (vim, emacs, atom, vs code for starters), but only ever really messed around with vim enough to like it, and I've also been trying out gedit for the last little while and really liking it, but I'm curious to see what other people use!
You might be interested in OniVim: https://www.onivim.io/ It's a mix of VSCode/Atom/etc. styled IDEs and Vim.
+1 for VS Code. I really like its multi-line editing, integrated git source control system and customizable terminal (so I can use powershell in it), as well as its amazing user-settings/extensions systems for tailoring the UI, adding custom linting, syntax highlighting, extending git capabilities, etc. It's a fantastic, incredibly well optimized, all-in-one IDE which I rarely need to leave in order to do something, especially thanks to the keybinding customization as well.
Though I still use Notepad++ for a lot for stuff I don't need source control for too... especially for its ultra-fast and comprehensive find/select/replace functionality.
If you need to quickly check a file or add a few lines Notepad++ is still king. Nothing comes close to it's speed and simplicity.
Is that amVim extension better than the more popular vim extension? Because the one I'm currently using is atrociously slow and frustrating...
Oh god. I just wanted to say thank you!! That extension is stupidly better than vscodevim. I don't even understand. Proper search integration. Synced undo states. MUCH faster. No diarrhea.
I don't think I've had this diarrhea problem what do you mean by it?
Also are you and @adys talking about vsvim? I've not found it slow or particularly bad. I do have neovim integration enabled but I think that is still only for ex commands
Emacsclient can do pair programming (don’t mind me, I’m on a mission).
Skype is garbage, yes -but I didn't know about that feature, I'll have to look into it more. I also never really though about how common vim is, which probably makes it valuable to at least know the basics, because they'll work everywhere
It's invaluable to know how to
hjkl
,dw
,diw
, and the friends ofi
andw
, alsof
,t
,.
,/
,?
, andy
,p
and friends, and finally:w
,:q
,:wq
and their ! variants::w!
etc., if using any type of Unixy OS. It means you can save yourself easily in many situations where all you have is vi, nano or ed, and can just ssh into some machine from any machine that can reach it and do whatever stuff you want (edit:) w/o any friction, especially if you combine this knowledge of vi with a working knowledge of POSIX shell and CLI utilities (man, sed, grep, find, cut, wc, tr, m4, cat, tee, ps, are the ones I use most often, in combination with procps utils like pgrep, pkill).I've gone from vim to emacs and back about thirty times, and I finally settled back on vim. I've tried every plugin under the sun, every vim distro, and several emacs distrocs (spacemacs and doom emacs being chief among them). What I've settled on and fallen in love with again is the simplicity of vim.
A master painter needs only color, a brush, and a medium. A novice painter may get wrapped up in tools - purchasing a sliding easel, the highest quality colors they can afford, thirty brushes, heat guns, rollers, droppers, chairs, etc.
The master will always work with more intention, and with a focus on the skills that matter (the act of painting itself) she does not grow warty dependencies.
Thus, these are my rules:
I am proud of where I am compared to where I used to be - I can string together macros more quickly, and navigate between files without much friction. I feel that I'm on the correct path.
https://sanctum.geek.nz/arabesque/vim-koans/
https://blog.samwhited.com/2015/04/the-dharma-of-vi/
https://sanctum.geek.nz/etc/emperor-sh-and-the-traveller.txt
The power of Emacs compels, you! (3x)
hisses
Thats a good analogy I think; emacs can be a lot, for sure, given that it can replace just about every program in a DE. Keeping things less complex is always good too!
can be a good thing, but may I suggest an alternative?
That's better, yeah - Simplicity for the sake of simplicity isn't always good, but rather keeping things from being over-complicated was my point (unless you like the over complication)
If your canoe is too small, it'll press against your feet.
If it is too large, it'll be hard to carry it around.
Your canoe must be just as small as you need,
and just as large as you need.
That way, you'll get to anywhere you want.
Upon hearing this, the novice was enlightened.
For sure! It's also a mindset thing, forcing myself to find simpler ways of working instead of forcing my tool to adapt to bad habits I've developed.
Well, having the tool adapt to your workflow isn't necessarily a bad thing - that was the point of vim originally for me, as plugins make it a breeze - but I don't need my (main) text editor to also check my email, read PDFs, and browse the web
I "use" vim (neovim to be specific) as my primary editor. I quote use, because the only commands I really remember are the basics like
y
,d
,u
. I plan on learning it fully (or at least learning more commands) at some point, but those are good enough for me currently.The most important things in my opinion are
.
,c
then the motions:$
,w
,t
,iw
,i<
,i"
and so on.So this lets you do cool stuff like search for a word then
cw
to change that word. Oh but actually you wanted to do that twice!n
to advance to next search then.
to repeat.But your cursor was in the middle of the word (or you're searching a substring)
ciw
(change inner word). Actually you just want to change some quoted textci"
a but you want to change the quotes tooca'
(change a '). And these all work withd
andy
so copy an html tag:ya<
it gives you a lot of extra power without much in the way of learning.One thing I love in vim and miss in emacs is
f
andt
:fx
means goto or up to and includingx
,tx
means go just before and up to but excludingx
. So if your line looks likedtx
gives youand
ftx
givesWas very useful when coding in vim. Something similar to
dfx
is possible in Emacs, but not as quick:C-SPC C-s x RET C-w
.dtx
is impossible w/o a motion. Also the many possibilities of motion is something I miss, especially the distinction betweenw
ande
.Hm, all of the things you mentioned do actually work in my Spacemacs/Evil config, though I'm not sure how far off the default Evil config Spacemacs takes things.
The composition with
t
orf
, as well as "start/end-word"w
ande
is also supported.Yeah, AFAIK Evil offers a very good emulation of vi. I plan one day to integrate it to my workflow, haven't got around to it yet unfortunately.
Evil emulates this functionality perfectly. If you don't want full Vim emulation, just don't initialize Evil and map the command to anything you want.
I've actually added Evil to my config now, and bound
evil-mode
toC-c v
so that I can toggle it on when needed and off when not. I recall not being able to to that: re-runningM-x evil-mode
would not turn it off reliably, but now it's working fine. Let's see how that'll do!I know what you mean. vim is like the C++ of editors for me. "Okay I know enough to get the job done. I'm sure I'll get around to learning all the other features...eventually...."
I forced myself to use emacs for all my text editing at some point and never looked back.
or something.
The main reason is that you bend it to your will for example:
the other day I wanted to be able to insert n blank lines either above or below the current line - without moving the cursor. A few minutes later I have 2 new keybindings to do exactly that. It's not about whether other editors have certain abilities it's about adding the abilities you want or need to your editor.
I'm constantly learning new things about it after years of using it.
Also, Evil is probably the best Vim emulation layer out there. Every plugin for the other editors has massive cons: VSCode's Vim plugin has a weird ass configuration method, IDEA's lacks a few commands and Atom's doesn't have
:
commands at all. In addition to that, the fact that every possible action in Emacs is easily mappable makes it a joy to customize your environment with Evil.Everything is possible on Emacs.
Except maybe watching YouTube. Oh, wait...
Every once in a while, I think about diggin up my old laptop and see if I can run emacs as a DE for a few days. Whenever I see something like this, I get closer to actually doing it :)
Oh... have you met the Emacs Window Manager? :D
You might have just sold me on emacs again... time to go switch again, darn it
I would strongly recommend grabbing a copy of Mickey Peterson's book Mastering Emacs then, or at least going through his reading guide.
Probably the biggest impact for me was learning how to use the incredible built-in help and information system effectively.
I'll give it a read for sure; Dunno what I'm going to use on my laptop yet (wayland support's what I'm looking for there, which emacs doesn't have yet; but I can just run it within terminal to get it) but emacs is locked in on my desktop now!
Come to the dark side, where you'll be much more productive, but, paradoxically, you'll never have time to work again.
Just take a look at my ever-evolving configurations gore.
Holy heck thats a big config - I'm intrigued, I might have to steal a bit from this...
There are many idiossincratic stuff there, but nothing too hard to understand. I plan to add more explanations. Feel free to ask if you have any doubts!
I wrote some Emacs tips for Vim users that might be useful.
On windows I still use Notepad++ for simple, tiny edits for which I can't really justify spinning up an IDE. When I can I tend to stick with Jetbrains stuff (thank you, student products) like Webstorm, PHPStorm or Pycharm.
On Linux I still use Jetbrains, and occasionally Vim or just Nano if need be. I still tend to work a lot on Windows though so I haven't really settled on any editor yet.
How would I go about getting the jetbrains student products? I think they'd be pretty useful, and I think I qualify (studying engineering), but I don't know the requirements for sure, and a quick skim of their site didn't reveal much. Also, how well are they supported on linux? Do their editors/IDEs support Wayland or only X, do they support hidpi screens, etc?
Most student products don't limit the deals to specific programs and only require an edu email address or valid student ID # to register for, and Jetbrains seems no different:
https://www.jetbrains.com/student/
And you can apply here: https://www.jetbrains.com/shop/eform/students
Thanks! I've got one a student email, so lets see how it goes - looking back, the page seems pretty obvious, not sure how I missed it
EDIT: I got my licenses, for anyone looking at this later - not using any yet but I'm sure they'll come in handy some day
I've not had any trouble so far with Jetbrains on Linux Mint and it appears to work fine on all other Debain derived distros. But that's as far as my experiencr goes, I couldn't tell you about Wayland support or hidpi screen support.
Well, I figured it was worth a shot - I've been using wayland on my labtop for the better touchscreen and automatic scaling when I use my monitor, but it's definitely not better than X for a daily driver yet. I've still got a debian partition on my PC at home (and I assume it supports windows too) so it'll be cool either way
I've been tinkering with emacs a bit too! Well, spacemacs, but close. I went through a whole bunch of editors this past month-ish (currently trying out gedit, because it's got gtk3+ & wayland support, which is where most others I tried fell short). I loved emacs itself though, if the GUI version had proper wayland support I probably would've stopped there. I also gave xi a quick try, with the xi-gtk frontend, but it seemed to be missing too much I'm used to (latex completion, code highlighting, colourschemes) but it could just be I didnt dig deep enough, or just that that frontend lacked the features.
Emacs is awesome, the only problem is my damn job getting in the way of my Elispian heaven... :D
IDK if I'm weird but Elisp is my favourite programming language and it's been the best programming experience ever.
I was reading your comment and thinking "but they could do all this on Emacs..." And suddenly, it emerged: the beast with one thousand heads!
Well if it works, no reason to knock it. What extensions do you use, if you don't mind me asking? VS Code used to be my goto when I only had my windows PC, but I haven't used it in so long everything is pretty out of date, so theres probably some useful stuff I've missed
Just to add one of my favorites:
https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight
This one adds a couple of handy features, for example it makes
// TODO: foo
a bright yellow and// FIXME: bar
a bright red. It also adds a search to the command palette to get a list of all TODOs/FIXMEs. I like it a lot.I use Sublime Text 3 for programming due to its relatively lightweight nature and built-in support for many different languages, and nano for any command-line editing (e.g. modifying config files on a remote server) due to it being the simplest to use without the need for memorizing a bunch of keybindings while also coming pre-installed on the distros I work with (yes, I know that vi is significantly more powerful than nano, but it's very seldom the case that I need it).
Well personally, I'd prefer nano to vi anyways! (vim over both though, but that's usually another install)
wow I see there's a lot of code writers here haha def feel like the minority.
Don't let that stop you from sharing your own editor! Even if this is ~comp, I'm always interested to hear how people outside of the programming field have different problems and solutions when it comes to text editing.
I wasn't a coder when I started using Vim, and then Emacs with Evil. I'm kind of a coder now, but I use Emacs for a lot that isn't code, almost always in Org Mode. I use it for all my todos, planning, projects, links, notes, prose (literature, comments, college essays...), exporting to any format I need, like Latex (PDF) and Markdown (for Tildes and Reddit posts).
Visual Studio Code. Looks good, is open source, is actively developed, has all needed features.
The favorite feature is ability to open any folder as project and search text there. The drawback is, sometimes it refuses to show big files. Then Notepad++ comes to the rescue as a backup.
I've never really used notepad++ (I don't do much editing on windows, though), is there really a benefit over the normal one if all I'm doing is quick config edits? My windows machine is almost entirely for gaming and the occasional office these days, so I wouldn't use it too much
Give it a try. It's as fast as normal Notepad but just not as plain. There are line numbers, tabs, syntax highlighting for some formats, encodings support, and many other features.
Well no harm in trying - I'll download it when I get home and give it a shot!
For editing, I'd have to say most things move beyond just my editor.
My shell is fish, for the awesome predictive commands, and the great shell language.
Fish gets extended by my manager, GNU Screen. Everything gets a screen session, and some things are attached to the same screen.
I do use nano for writing, it gets out of my way. But for common problem editing, I've got a couple dozen fish functions, ed scripts, and so on.
Though, for some things I go to Vim, which is usually also available.
I also use heredocs a surprising amount of time.
Nice to see someone else using fish! The automatic autocomplete is what hooked me, but I stayed because I like the shell's language so much better than bash/sh. Any chance you know how screen compares to tmux? I used to use tilix/terminator or some variant thereof, but moved to tmux a while back. I've heard screen is pretty good, but haven't gotten around to looking into it yet. Is screen better/worse the same, is it worth switching?
tmux is better. Flat.
Screen supports splitting, detaching, attaching, and firing off commands, but the way you do anything but the most basic of things is awful. (And session splits are lost once you detach.) In copy-mode, you can't scroll the buffer, or switch to another session. Modifying the status bar or getting unicode working are the stuff of nightmares.
tmux let's you load different styles for different sessions, renaming sessions isn't absolute hell, has proper unicode support, let's you fire keystrokes from one session to another, etc. Whilst supporting nearly everything screen does.
However, screen is stable, and that means I've always had it running on every server I've had to manage. Easier for muscle memory if you don't have to futz with multiple things. (Also screen has serial and telnet support, for working with embedded electronics, which is kinda a hobby.)
I used Neovim for about 6 months then switched to Emacs mostly because of Org Mode. After another 6 months, I am now a very satisfied Emacs/Evil user, and (except for quick edits with Neovim in the command-line) I'll use it for everything text related (including prose) unless I'm forced by some strong circumstances to use something else.
My gigantic configuration.
That leads me to another question: these days I usually write my prose (essays, design reports) in emacs/gedit/vim in latex, but sometimes I miss the ease of a word processor like word/libreoffice. Is there any vim/emacs script out there that gives similar functionality, or am I out of luck?
I really like markdown, but because of the practicality of using Org for everything I prefer writing in Org and exporting from it.
I switched because of Org and didn’t regret. But it does take a lot of effort to “convert” to Emacs, and it’s certainly not worth it for everyone.
Once you learn it, though, Emacs is hard to beat.
Depends on what exactly you’re looking for. If you’re talking about inline formatting, I have macros mapped for:
I also have snippets for plain list items, descriptions, todos etc. It’s much handier than something like Libreoffice. But you have to do it yourself. Apart from the built in macros feature, Yasnippet and Hydra would be the main modes to help you achieve that.
I think my snippets are in the repository but I can’t remember where Yasnippets puts them.
For spelling I use Flyspell, and I want to install Langtool for grammar but the installation is not trivial and I’m kinda lazy right now.
Depends, for quick edits I usually go with nano, but if I'm going to be writing something for more than a few minutes, I fire up vim.
I've never been quite a fan of TUI applications (I grew up with a mouse and later, a touchscreen), but if necessary I will use
nano
.For text unrelated to a bigger project, like config files, I use Linux Mint's graphical text editor
xed
and for projects I employgeany
, which is a comparatively light-weight IDE.I think this is a big differentiator that people tend to overlook. In my early childhood having a mouse was the exception, not the norm, (thin clients, anyone?) so I was familiar with terminal UIs from a very young age, which is why I prefer them to this day.
For example, I have only ever had 2 touch screen "smart" phones, and I only bought the second one because the first one died. It still feels alien to me and I miss no-eyes touch typing with a T9 keyboard with my numerous Nokia phones.
You have a very good point about generational input differences!
However, I'm not sure if my original post came over correctly, so I'll clarify: I love my terminal and all its useful utilities you can pipe into another. On the other hand, the "real" terminal applications with their fullscreen interfaces feel like graphical applications - except constrained to a resolution of 209×73 "pixels" and dogmatically dismissive of my other input tool - the mouse, a gift from the heavens above!
I can click on a line so much faster than skip through all of them by abusing my
k
orj
keys. Scrolling with a keyboard is horrible when compared to the smooth, satisfying whirring of a mousewheel. Context menus, even more deserving of praise.Really, I crave a program that both doesn't hide advanced features in tons of GUIs (they take too much time to navigate even with the glorious mouse) by having a command line integrated AND has all the benefits of graphical programs. The closest I've gotten to that is the aforementioned
geany
with the commander plugin. If any of you know a better solution, please let me know.Hopefully someone else can help you with that because as someone who goes out of his way to avoid touching the mouse as much possible, I don't think I'd be much help :)
Most terminal emulators (any with full xterm support) will let you add mouse controls, including scrolling, if you want a compromise.
Vim:
:set mouse=a
Emacs:
M-x xterm-mouse-mode
Nano, (add to ~/.nanorc):
set mouse
It's worth noting that you can also run Emacs graphically under X, and doing so gives you much better support for different fonts, colors, text decorations of various kinds, and better mouse support with context menus and widgets and so on.
I usually have a graphical Emacs full screen on one desktop, and use text-mode
emacsclient
sessions for smaller one-off tasks from the terminal.I use GNU Emacs for editing and beyond. Its customizability, interactivity and Elisp are just unmatched. I edit text and code in it, using Org Mode as an intermediate language for TeX and LibreOffice. My configuration.
I use nano in the shell and VS Code for my graphical editor.
Windows: for quick stuff, Notepad++, for long stuff, Vim.
Linux: for quick stuff, Gedit, for long stuff, NeoVim (NeoVim on Windows takes too long to load and can be unreliable).
My current workflow's just about the same as yours, except on windows I just default to vim - What are the benefits of neovim though? I had a couple weeks where I set it up and used it on a whim, but it was basically the same as my vim workflow at the time, and I couldn't find any differences
It used to have a terminal emulator, but regular Vim has since incorporated one (although I believe the implementation is different, which is unfortunate since it means plugins for the Vim terminal emulator likely will not work for NeoVim, and vice-versa). I also believe that NeoVim's asyncronous operations support was also the catalyst for Vim getting it.
Out of the box, NeoVim includes clipboard support (Vim may, depending on what flags your distro maintainers compiled it with & the Vim package you install), syntax highlighting, mouse support (again, maintainer & package dependent), and not only does Python 3 actually work (I was never able to get Vim to compile w/Python 3 support), you can have 2 and 3 support at the same time. It also has an RPC API, which opens a lot of doors, including a full-blown IDE being built around NeoVim.
If you already have a ton of plugins, NeoVim likely won't provide much benefit until you start exploring NeoVim-only plugins like those that use RPC. If you are just starting a new config, some of the built-in features will definitely shine.
Ooo, Python 3 support's enough to upgrade on it's own. Still trying to track down a good frontend for it though (Oni's great, but doesn't support wayland; nvim-pygtk3 should, but crashes on startup for me)
EDIT: I found one written in rust, just called neovim-gtk, and on the AUR conveniently! I'm gonna give it a shot
I usually just use Sublime Text 3. I love the development pace of VS Code and I feel like Microsoft's doing a great job with that editor, but Electron apps just run so slow on my old and shitty laptop that I keep finding myself going back to Sublime. Course, it also helps that I'm used to all the keybindings.
I am unable to remember many things (commands, shortcuts, menu locations, etc.) so I usually go with whatever is the most intuitive available editor on whatever platform I have to use. On the command line I use nano and if that's not available I use vim (after years of practice I managed to learn the commands to save, quit, insert and remove lines, and copy and paste, that's all I need). If I can use a GUI I use Mouspad, Geany or Kate in no particular order of preference (for all of the them the shortcuts are the same, ctrl+s to save, ctrl+c and +v to copy and paste and ctrl+w to close a tab, I don't need more than that). TL;DR whatever gets the job done quickly and without making me have to learn and remember a million shortcuts.
Nothing wrong with quick & easy; I've been playing with gedit lately for exactly that (and that there aren't many other wayland compatible editors...)
Sublime text 3 for coding stuff
Vim for quick edits on the terminal, Atom for stuff I want to sit down and work on. I don't particularly like Atom but it works well enough. I might go back to VS Code. I just need the real mouse support and workflow of a GUI program. Vim tries so hard to have mouse support but it just gets in the way more often than it helps.
I really like the aesthetic of Atom, but last time I tried using it, it was insanely slow compared to VS Code. Have they improved that at all or is it still pretty poorly optimized?
And despite what the new CEO says about continuing to develop it, I also kind of have to wonder how much longer Atom will stick around for now that MS owns Github.
Nope, still very slow. Even if I've already got it open, if I find something though my file manager and "Open With" Atom, it takes forever, and this computer is no slouch.
Heh... I have to ask then; Why are you still using it? :P
Haven't stumbled across an alternative and it's not a big enough pain to switch yet. Although I do still have VS Code installed and I don't remember having any of these pains with it.
My main point of pain with atom is that it's not just the startup times that are slow. I usually just have it open in the background and it keeps to itself. And if I Ctrl+O or File>Open a new file or folder, that's perfectly fast. But if I have an outside file that I choose to "Open With" Atom, that's just as slow as startup.
Have you tried gvim or something like oni (an electron frontend for nvim)? They might be just the right spot in between you're looking for, unless you rely on atom's extensions
I glanced at gvim before, but Oni's demo video there looks pretty convincing. I'll have to give that a try.
Go for it! So long as you have a bit of ram to spare (electron) it should run just fine
Depends on what I'm doing. Vim is great if I need to do something quick from the command line or if I'm SSH'ed to a remote server. For heavy development the JetBrains IDEs are fantastic, PhpStorm is my daily driver. For one-off local file edits or as a general scratch pad, BBEdit doesn't suck. Usually when I'm working with text I find formatting to be more annoying than useful, but if I'm taking more detailed meeting notes or documenting something non-technical Evernote gets the job done.
Just curious, do you pay for the IDEs and/or BBedit? I don't know if there's even cracks/mods in existence, and I think a text editor's a pretty great investment (given how much I use mine, I'd more than willing to pay, but would rather stick with a FOSS one if I can) but I've never looked into these specifically or if they're worth the money
My employer pays for my IDE license, which is nice. JetBrains software is great but a bit pricey for me to spring for personally. As for BBEdit, I previously used TextWrangler, the simpler, free option by the same company. It was more than robust enough for what I used it for. As that link explains, they discontinued it and told the userbase to just move over to BBEdit and feel no obligation to pay:
So that's what I did, unregistered BBEdit is basically identical to what TextWrangler was, and I don't need any of the "pro features" on offer. The free feature set alone is nothing to sneeze at, honestly.
I still haven't been able to settle on a single editor.
For a while I have been using vim, then tried atom for a while but the startup time on it drove me crazy.
Currently I am shuffling between vscode and sublime text 3. The ui experience of vscode is nicer compared to sublime-text 3. But I have been enjoying sublimes keyboard shortcuts and find myself being more productive on it.
Kakoune! It's like Vim, but better! :)
The following is an abbreviated excerpt from "Why Kakoune?" which I highly recommend giving a click as it contains many useful visuals.
Improving on the editing model
vi basic grammar is verb followed by object; it’s nice because it matches well with the order we use in English, "delete word". On the other hand, it does not match well with the nature of what we express: There is only a handfull of verbs in text editing (delete, yank, paste, insert…), and they don’t compose, contrarily to objects which can be arbitrarily complex, and difficult to express. That means that errors are not handled well. If you express your object wrongly with a delete verb, the wrong text will get deleted, you will need to undo, and try again.
Kakoune’s grammar is object followed by verb, combined with instantaneous feedback, that means you always see the current object (In Kakoune we call that the selection) before you apply your change, which allows you to correct errors on the go.
Kakoune tries hard to fix one of the big problems with the vi model: its lack of interactivity. Because of the verb followed by object grammar, vi changes are made in the dark, we dont see their effect until the whole editing sentence is finished.
5dw
will delete to next five words, if you then realize that was one word too many, you need to undo, go back to your initial position, and try again with4dw
. In Kakoune, you would do5W
, see immediately that one more word than expected was selected, typeBH
to remove that word from the selection, thend
to delete. At each step you get visual feedback, and have the opportunity to correct it.At the lower level, the problem is that vi treats moving around and selecting an object as two different things. Kakoune unifies that, moving is selecting.
w
does not just go to the next word, it selects from current position to the next word. By convention, capital commands tend to expand the selection, soW
would expand the current selection to the next word.Multiple selections
Another particular feature of Kakoune is its support for, and emphasis towards the use of multiple selections. Multiple selections in Kakoune are not just one additional feature, it is the central way of interacting with your text. For example there is no such thing as a "global replace" in Kakoune. What you would do is select the whole buffer with the
%
command, then select all matches for a regex in the current selections (that is the whole buffer here) with the s command, which prompts for a regex. You would end up with one selection for each match of your regex and use the insert mode to do your change. Globally replacing foo with bar would be done with%sfoo<ret>cbar<esc>
which is just the combination of basic building blocks.…
Interactive, predictible and fast
A design goal of Kakoune is to beat vim at its own game, while providing a cleaner editing model. The combination of multiple selections and cleaned up grammar shows thats its possible to have text edition that is interactive, predictible, and fast at the same time.
Interactivity comes by providing feedback on every commands, the inverted object then verb grammar makes that possible, every selection modification has direct visual feedback, regex based selections incrementally show what will get selected, including when the regular expression is invalid, and even yanking some text displays a message notifying how many selections were yanked.
Predictibilty comes from the simple effect of most commands. Each command is conceptually simple, doing one single thing.
d
deletes whatever is selected, nothing more.%
selects the whole buffer,s
prompts for a regex and selects matches in the previous selection. It is the combination of these building blocks that allows for complex, but predictible, actions on the text.Being fast, as in less keystrokes, is provided by carefully designing the set of editing commands so that they interact well together, and by sometimes sacrificing beauty for useability. For example,
<a-s>
is equivalent toS^<ret>
, they both split on new lines, but this is a so common use case that it deserves to have its own key. As shown in http://github.com/mawww/golf, Kakoune manages to beat Vim at the keystroke count game in most cases, using much more idiomatic commands.Discoverability
Keyboard oriented programs tend to be at a disadvantage compared to GUI applications because they are less discoverable; there is no menu bar on which to click to see the available options, no tooltip appearing when you hover above a button explaining what it does.
Kakoune solves this problem through the use of two mechanisms: extensive completion support, and auto-information display.
When a command is written in a prompt, Kakoune will automatically open a menu providing you with the available completions for the current parameter. It will know if the parameter is supposed to be a word against a fixed set of word, the name of a buffer, a filename, etc… Actually, as soon as
:
is typed, entering command prompt mode, the list of existing commands will be displayed in the completion menu.Additionally, Kakoune will display an information box, describing what the command does, what optional switches it can take, what they do…
…
Extensive completion support
Keyboard oriented programs are much easier to work with when they provide extensive completion support. For a long time, completion has been prefix based, and that has been working very well.
More recently, we started to see more and more programs using the so called fuzzy completion. Fuzzy completion tends to be subsequence based, instead of prefix based, which means the typed query needs to be a subsequence of a candidate to be considered matching, instead of a prefix. That will generate more candidates (all prefix matches are also subsequence matches), so it needs a good ranking algorithm to sort the matches and put the best ones first.
Kakoune embraces fuzzy matching for its completion support, which kicks in both during insert mode, and prompt mode.
…
A better unix citizen
Easily making programs cooperate with each others is one of the main strength of the Unix environment. Kakoune is designed to integrate nicely with a POSIX system: various text editing commands give direct access to the power of POSIX tools, like
|
, which prompts for a shell command and pipe selections through it, replacing their contents with the command output, or$
that prompts for a command, and keeps selections for which the command returned success.…
Final Thoughts
Kakoune provides an efficient code editing environment, both very predictible, hence scriptable, and very interactive. Its learning curve is considerably easier than Vim thanks to a more consistent design associated with strong discoverability, while still being faster (as in less keystrokes) in most use cases.
…
Kakoune is available at http://github.com/mawww/kakoune and has a website at http://kakoune.org
Vim. It's awesome and there are plug-ins for almost everything.
Kate most of the time, Vim when needed.
Nothing wrong with keeping it simple
Linux: nano for quickies, Emacs for more
Windows: NotePad++
Atom for serious programming, Vim if I just need to quickly edit a config file or write a script, Trilium for long term notes, and Gedit if I just need someplace to type/paste stuff into.
I use Altova XML Spy for well XML and XSD and I like it a lot. I'm not even remotely using all it's capabilities but it's very intuitive and I like the different views to see and edit your code.
GVim with about 15 years worth of accumulated .vimrc customizations that I keep in a special source control repo.
I was using neovim until yesterday. Switched to micro recently and i'm liking it so far.
Neovim and VsCode with VsVim
Spent a lot of time evaluating environments and forced myself to use vim exclusively for a month. Once I got used to the basics I never wanted to edit any other way and resent using stuff like the browser, Word/Docs or Excel/Sheets without vim keybinds. There are often things to emulate but none do it very well except the vim emulation in VsCode is close enough to justify using it especially for typescript development.
Not for a lot of years.
My favourite was the Vi editor. Talking late 1980's here. Anyone else as old as me??!!
Shift-ZZ: Out!
Nano for configuration/administration, and Sublime for more complex things like coding.
TextMate 2, primarily.
Nowadays, Emacs. It's FOSS, it's not modal, it's incredibly configurable and very lightweight when compared to the alternatives - Vim is out because of modal editing, Sublime (my old editor) is not FOSS, VSCode & Atom use Electron and I intensely dislike Electron and its RAM-gobbling ways.
I discovered Howl afterwards, but even if it took a while to get used to Emacs I now have configured my environment just how I like it, courtesy of Babel + Org-mode.
vim in the terminal and intellij/eclipse for java
https://www.xkcd.com/378/
Always relevant, without fail