Ki Editor - an editor that operates on the AST
65 points
2 hours ago
| 6 comments
| ki-editor.org
| HN
scriptsmith
1 hour ago
[-]
The "First-class syntactic selection" reminds me of my most used shortcut(s) in Jetbrains IDEs: the Expand / Shrink Selection.

  Ctrl + W
  Ctrl + Shift + W
https://www.jetbrains.com/help/idea/working-with-source-code...

It really changed my perspective on interacting with the 'text' of a file.

VS Code, Zed, etc. have similar operations, but in my experience they expand and shrink too coarsely.

reply
enkursigilo
54 minutes ago
[-]
Also available as `incremental selection` in Neovim via tree-sitter.
reply
shashurup
1 hour ago
[-]
In my classification of editors:

1. Orthodox. Mostly focused on looks and integrations.

2. Modal, Vim improvement. Focus on keeping basic Vim keybindings with minor improvements.

3. Modal, rethinking Vim approach.

Ki falls into the third category which I constantly monitor.

reply
jshmrsn
16 minutes ago
[-]
I am working on a modal code editor project that you might find interesting then. It also operates on an AST directly, which is represented as UI nodes which closely resemble normal text layout. Email in profile if you’d like to give it a try and possibly give early feedback (still in early development).
reply
hwhshs
37 minutes ago
[-]
Vim improvement

So Ed Visual Mode Improved Improved!

reply
noosphr
1 hour ago
[-]
4. All of the above.

Which is Emacs.

reply
shashurup
1 hour ago
[-]
I know, I use Emacs+Evil. I'm going to give Ki a try and, in case of success, to think about writing Ki binding for Emacs.
reply
ablob
39 minutes ago
[-]
This is the first time I've heard about Emacs trying to look nice.
reply
skydhash
1 hour ago
[-]
Vim is Emacs applied to Vi
reply
Myzel394
18 minutes ago
[-]
I'll wait till an Emacs package is available
reply
reedlaw
3 minutes ago
[-]
reply
evelant
17 minutes ago
[-]
I made the vscode integration for this. I feel bad that I haven’t contributed much since, it’s a really cool project. IMO it’s important to try to innovate in the foundational tools of our craft (editors, languages, tooling, OS, etc) which Ki does.
reply
armchairhacker
2 hours ago
[-]
Vim-like (terminal and VSCode extension) that prioritizes syntax-based navigation.

Comparison to Vim and Helix: https://ki-editor.org/docs/comparison#user-content-fn-1

reply
worksonmine
46 minutes ago
[-]
That comparison table is strange and sometimes wrong. Neovim for example detects and updates external file changes by default. And the coherence of the keybindings in Ki is "Great" bit vim/helix:

> As you can see, there's no single logical categorization for these keymaps, they are either lowercase-uppercase, normal-alt, left-right bracket, or outright unexplainable.

Word, End, Back, Change Word and even Change Inner (, etc are very logical to me and I feel like I'm talking to the editor when editing. I get that it doesn't make sense when one has learned another way to do it, but it does make total sense you just have to make an effort to try and understand it.

It's like learning and always driving automatic then calling manual "outright unexplainable". You simply learned another way and are conditioned into believing that's the one true way. It shows the creator comes from VSCode (multi-cursor is a useless feature, just use s/search/replace and get used to macros and a whole new world will open).

reply
davidee
4 minutes ago
[-]
I think you've touched on it, but I'm going try to take it one step further into explicitness.

Just over a year ago I decided to switch to Neovim. The reason for switching was personal; I was struggling with what I'll call "clutter" in other tools and I wanted a tool that would reinforce, at least lightly, a mode of working that promoted focus on what I was working on, while making it easy to reference other files without loading up my editor with tabs and other visual clutter (buttons/menus) I don't care about most of the time.

I took the advice I seemed to bump into repeatedly: try out vim mode in my current editor before making the plunge.

I really struggled at first. It felt wildly foreign. All the shortcuts were nowhere near to the world I was familiar with.

As I was about to give up, I ran into some advice that was along the lines of "stop trying to memorize shortcuts and start thinking in terms of what you want to achieve" (words and motions in vim-speak).

Your example of [C]hange [I]nner is a great one; that one in particular was life changing. Sure there are some words and motions that do require memorization, but so many others just flow naturally. And once you start thinking in actions, it's easy to see how they can layer on top of each other in really elegant ways.

I'm not even here trying to tout vim-like editors, I'd wager there are many editors that have some semblance of this kind of interaction, but rather to reiterate there's a shift from a PoV of function vs. goal.

Again, I don't think this is "the right way" but rather one of many perspectives that works in context with the phenomenology of me.

reply
hou32hou
3 minutes ago
[-]
> It shows the creator comes from VSCode

Hey, one of the creators here, I actually daily drove Neovim for two years, before switching to Helix for a while, then finally Ki.

> multi-cursor is a useless feature

I was a Neovim macro user until I figured out how insane that was compared to multi-cursor after using Helix.

reply
pbronez
28 minutes ago
[-]
I had an experience like this when I switched to a Keyboardio split keyboard. It was impossible to use at first. Then I do some deliberate practice with a typing tutor app and now I love it so much I own multiple.

Is there a good tutorial for some of these advanced text editing features?

In particular I’d like to get platform independent shortcuts / key bindings. I use both windows and MacOS daily, and it throws off my muscle memory for shortcuts like “go to beginning of line”

reply
hwhshs
36 minutes ago
[-]
Why not a vim plugin
reply
cassepipe
1 minute ago
[-]
> Note that the Ki keybindings cannot be simply implemented in Vim/Helix via key- remapping, due to the lack of the concept of Selection Mode, and implementing that requires major architectural changes in the core.
reply
hou32hou
1 minute ago
[-]
reply