Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Leap Key Navigation #4934

Open
1 task done
peter-wasilko opened this issue Mar 15, 2023 · 9 comments
Open
1 task done

Implement Leap Key Navigation #4934

peter-wasilko opened this issue Mar 15, 2023 · 9 comments
Labels
enhancement [core label]

Comments

@peter-wasilko
Copy link

Check for existing issues

  • Completed

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
Copy link
Contributor

clo4 commented Mar 18, 2023

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 #4930 and #5289 (it's a different execution of the same concept)

@JosephTLyons JosephTLyons transferred this issue from zed-industries/community Jan 24, 2024
@clord
Copy link

clord commented Apr 16, 2024

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.

@vo1dscout
Copy link

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.

@willtalmadge
Copy link

willtalmadge commented Aug 25, 2024

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 #4930 and #5289 (it's a different execution of the same concept)

You can think of it like a poor-man's eye tracker because it serves the same functional purpose. If you are looking at a location in a vim buffer, you can get the cursor to that location by pressing no more than 2-3 keys (not including the start key). So you look at something, press 's', start typing what you are looking at, if there's ambiguity it'll temporarily put a "flag" character in the buffer you should type to disambiguate which site you are looking at. It feels like your editor is reading your mind. Completely replaces the need for touching the trackpad which is helpful for me because trackpad clicking gives me carpal tunnel.

@ninjarogue
Copy link

ninjarogue commented Aug 28, 2024

Here's a quick demo:

demo.mov

I'm pressing 's' to activate leap.

@djmango
Copy link

djmango commented Nov 11, 2024

Is this possible to add via an extension? Would prefer core ideally but I'd be happy to look into writing a plugin

@clord
Copy link

clord commented Nov 12, 2024

This is one of those things that Zed could really shine at, since it is not limited to the character grid like a terminal editor. Target annotations could avoid replacing characters at the target.

Another noteworthy thing for this feature is that it works cross-tab. In vim, I set up S to jump to another split, and then plopping the cursor right where it's needed.

@trkoch
Copy link

trkoch commented Dec 16, 2024

This feature request might seem like a stretch and could appear arbitrary to implement since it's just one of many Vim plugins. However, consider that Zed is uniquely positioned to implement this seamlessly (implementation in vscode-neovim is decent, but limited). I agree and concur leap greatly enhances keyboard navigation, aligning with Zed’s focus on minimizing mouse use.

@PlexSheep
Copy link

Coming from neovim and giving zed a real chance, this is something I really miss.

For one, in the actual editing buffer, but also between different buffers/panels/whatever

It's just a very efficient way to move without making use of a mouse.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement [core label]
Projects
None yet
Development

No branches or pull requests

10 participants