zed-industries / zed

Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
https://zed.dev
Other
39.23k stars 2.03k forks source link

Implement Leap Key Navigation #4934

Open peter-wasilko opened 1 year ago

peter-wasilko commented 1 year ago

Check for existing issues

Describe the feature

Jef Raskin's design for the Canon Cat employed a quasi-mode for rapid navigation as illustrated in this YouTube Video.

This feature has also been requested in the helloSystem project repro.

Also, BitSavers has a copy of the Cat's Technical Documentation that may be of interest on this topic among others.

Finally, there was an attempted reimplementation in Python by Aza Raskin, Jef's son.

If applicable, add mockups / screenshots to help present your vision of the feature

No response

clo4 commented 1 year ago

This is an interesting idea. I don't see how it's different from using cmd-f though (or //? in vim mode) -- could you explain further what makes this different from just searching?

Seems similar to zed-industries/zed#4930 and zed-industries/zed#5289 (it's a different execution of the same concept)

clord commented 2 months ago

Plus one for this.

I prefer leap over hop and easymotion personally, as it is very natural; using the word prefix itself instead of random characters. With it, you trigger the command somehow and then press the two letters of the word you want the cursor to go, and all locations that match on screen get an indication. since you're looking at where you want to go, you press the key that marks the location, and your cursor jumps. Since only places with the two characters appear, the visual clutter is minimal.

Please see the readme at https://github.com/ggandor/leap.nvim

Other editors have this idea too, and bring new concepts to it. For instance, helix recently added goto_word mode.

This category of plugin speaks to the need for quickly moving the cursor visually without touching the mouse or changing modes.

mmosk commented 1 month ago

Currently, leap.nvim and oil.nvim are the two things I miss the most, in that order.

I like / for being stateful (cycling through matches) and global, but when you just need to jump to a certain place in a viewport (which I believe to be the most common motion), it seems like nothing does it better than leap.nvim at the moment.