Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Sep 5, 2024. It is now read-only.
/hop.nvimPublic archive

Neovim motions on speed!

License

NotificationsYou must be signed in to change notification settings

hadronized/hop.nvim

Repository files navigation

                                          __                                         / /_  ____  ____                                        / __ \/ __ \/ __ \                                       / / / / /_/ / /_/ /                                      /_/ /_/\____/ .___/                                                 /_/                                  · Neovim motions on speed! ·

Install ·Wiki ·Screenshots ·Discuss

Hop is anEasyMotion-like plugin allowing you to jump anywhere in adocument with as few keystrokes as possible. It does so by annotating text inyour buffer with hints, short string sequences for which each characterrepresents a key to type to jump to the annotated text. Most of the time,those sequences’ lengths will be between 1 to 3 characters, making every jumptarget in your document reachable in a few keystrokes.

Deprecation notice

The project isunmaintained for probably forever. No more commits will be made, and since Neovim continues to beupdated, it is very likely that this plugin will break / have bugs.

If you enjoyedphaazon/hop.nvim, you should really head over to the fork of@smoka7,smoka7/hop.nvim. Many bugs were fixed and new features added.

Thank you for being such a supportive and passionate community! ❤️

Motivation

Hop is a complete from-scratch rewrite ofEasyMotion, a famous plugin toenhance the native motions of Vim. Even thoughEasyMotion is usable inNeovim, it suffers from a few drawbacks making it not comfortable to use withNeovim version >0.5 – at least at the time of writing these lines:

  • EasyMotion uses an old trick to annotate jump targets by saving thecontents of the buffer, replacing it with the highlighted annotations andthen restoring the initial buffer after jump. This trick is dangerous as itwill change the contents of your buffer. A UI plugin should never do anythingto existing buffers’ contents.
  • Because the contents of buffers will temporarily change, other parts of theeditor and/or plugins relying on buffer change events will react and will gomad. An example is the internal LSP client implementation of Neovim >0.5 orits treesitter native implementation. For LSP, it means that the connectedLSP server will receive a buffer with the jump target annotations… notideal.

Hop is a modern take implementing this concept for the latest versions ofNeovim.

Features

  • Go to any word in the current buffer (:HopWord).
  • Go to any character in the current buffer (:HopChar1).
  • Go to any bigrams in the current buffer (:HopChar2).
  • Make an arbitrary search akin to/ and go to any occurrences (:HopPattern).
  • Go to any line and any line start (:HopLine,:HopLineStart).
  • Go to anywhere (:HopAnywhere).
  • Use Hop cross windows with multi-windows support (:Hop*MW).
  • Use it with commands likev,d,c,y to visually select/delete/change/yank up to your new cursor position.
  • Support a wide variety of user configuration options, among the possibility to alter the behavior of commandsto hint only before or after the cursor (:Hop*BC,:Hop*AC), for the current line (:Hop*CurrentLine),change the dictionary keys to use for the labels, jump on sole occurrence, etc.
  • Extensible: provide your own jump targets and create Hop extensions!

Getting started

This section will guide you through the list of steps you must take to be able to get started withHop.

This plugin was written against Neovim 0.5, which is currently a nightly version. This plugin will not work:

  • With a version of Neovim before 0.5.
  • On Vim.No support for Vim is planned.

Installation

Whatever solution / package manager you are using, you need to ensure that thesetup Lua function is called at somepoint, otherwise the plugin will not work. If your package manager doesn’t support automatic calling of this function,you can call it manually after your plugin is installed:

require'hop'.setup()

To get a default experience. Feel free to customize later thesetup invocation (:h hop.setup). If you do, then youwill probably want to ensure the configuration is okay by running:checkhealth. Various checks will be performed byHop to ensure everything is all good.

Important note about versioning

This plugin implementsSemVer via git branches and tags. Versions are prefixed with av, and only patch versionsare git tags. Major and minor versions are git branches. You arevery strongly advised to use a major versiondependency to be sure your config will not break when Hop gets updated.

Using vim-plug

Plug'phaazon/hop.nvim'

Using packer

use {'phaazon/hop.nvim',branch='v2',-- optional but strongly recommendedconfig=function()-- you can configure Hop the way you like here; see :h hop-configrequire'hop'.setup {keys='etovxqpdygfblzhckisuran'}end}

Nightly users

Hop supports nightly releases of Neovim. However, keep in mind that if you are on a nightly version, you must beonthe last one. If you are not, then you are exposed to compatibility issues / breakage.

Usage

See thewiki.

Keybindings

Hop doesn’t set any keybindings; you will have to define them by yourself.

If you want to create a key binding from within Lua:

-- place this in one of your configuration file(s)localhop=require('hop')localdirections=require('hop.hint').HintDirectionvim.keymap.set('','f',function()hop.hint_char1({direction=directions.AFTER_CURSOR,current_line_only=true })end, {remap=true})vim.keymap.set('','F',function()hop.hint_char1({direction=directions.BEFORE_CURSOR,current_line_only=true })end, {remap=true})vim.keymap.set('','t',function()hop.hint_char1({direction=directions.AFTER_CURSOR,current_line_only=true,hint_offset=-1 })end, {remap=true})vim.keymap.set('','T',function()hop.hint_char1({direction=directions.BEFORE_CURSOR,current_line_only=true,hint_offset=1 })end, {remap=true})

Chat

Join the discussion on the officialMatrix room!

About

Neovim motions on speed!

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp