🎸

Sorry, I was thinking about hellshake-yano.vim

に公開

This article is about Vim Ekiden on October 15, 2025.
The previous article is 482F’s Disabling Italic in Lua Neovim.

In Vim, cursor movement is fundamentally done with motion keys such as hjkl or w/b/e. However, when you want to move to the N‑th line and M‑th character displayed on the screen, you have to press a key repeatedly many times. This is obvious, but it is still tedious. In principle you just want to move to position A, and the key presses are a necessary evil. I wanted a solution, so I made one.

Solution: hit‑a‑hint style plugins

There are several solutions to the problem of “having to type many keys to move”.

These plugins display markers on the words on the screen and let you jump to a location instantly by typing the corresponding marker—a “hit‑a‑hint” feature. The number of keystrokes required is drastically reduced, enabling more efficient navigation.

Points that bothered me about existing plugins

These plugins share a common issue that affected me: the context switch required to enter hit‑a‑hint mode. This breaks your focus.

Typical hit‑a‑hint navigation flow

1. Press a specific key (e.g., `<Leader><Leader>w`)
2. Switch to “movement mode” (context switch)
3. Markers appear
5. Visually search for the target marker (context switch)
6. Type the marker to jump
7. Return to normal mode

Steps 2 and 5 felt particularly problematic because they interrupt the train of thought and drain concentration.

Introducing hellshake‑yano.vim

hellshake‑yano.vim implements a different approach to solve this problem.

Concept: “Roughly around here” – move there quickly and casually

The distinguishing feature of hellshake‑yano.vim is that it naturally extends the usual hjkl and w/b/e motions:

Press a motion key a few times → hints appear automatically → jump instantly via marker

The automatic hint display removes the need for a mode switch, so your thought flow stays uninterrupted.

Main Features

1. No context switching needed

The biggest advantage is that you never have to change modes:

  • Use hjkl or w/b/e as usual
  • After a certain number of presses (default 3), hints appear automatically
  • No special keys to remember
  • Your thinking remains continuous

2. Works in visual mode too

Selection in visual mode is supported in the same way:

" While in visual mode, press `w` a few times → hints appear → expand the selection with a marker
v www → hint displayed → expand selection instantly

3. Japanese support (word segmentation)

Supports Japanese text:

  • Morphological analysis via TinySegmenter
  • Natural word boundaries recognized by particle‑joining rules
  • Custom dictionary for programming terminology
Example: “データベース接続処理” → “データベース” “接続” “処理”

Why it feels seamless

A visual comparison with traditional hit‑a‑hint plugins:

Traditional hit‑a‑hint plugins:

Normal mode → [special key] → movement mode → type marker → back to normal mode
                ↑ context switch ↑                  ↑ context switch ↑

hellshake‑yano.vim:

Normal mode → hjkl/wbe → (hints appear automatically) → type marker → continue
                     ↑ natural extension ↑

Demo

Cursor move

move-hint

Visual select

visual-hint

Example Configuration

Basic setup

Install the plugin and add the following to init.vim or .vimrc. Then try pressing hjkl or wbe a few times.

let g:hellshake_yano = {
      \ 'useJapanese': v:false,
      \ 'useHintGroups': v:true,
      \ 'perKeyMotionCount': {
      \   'w': 1,  " show hint after one `w`
      \   'b': 1,
      \   'e': 1,
      \   'h': 2,  " show hint after two `h/j/k/l`
      \   'j': 2,
      \   'k': 2,
      \   'l': 2,
      \ },
      \ 'perKeyMinLength': {
      \   'w': 3,  " show hints only for words >= 3 chars
      \   'b': 3,
      \   'e': 3,
      \ },
      \ }

Settings for Japanese development

let g:hellshake_yano = #{
\   useJapanese: v:true,
\   useTinySegmenter: v:true,
\   perKeyMinLength: #{
\     'v': 1,    " visual selection – all characters
\     'w': 3,    " word motion – meaningful words only
\     'e': 2
\   },
\   enableHighlight: v:true
\ }

Summary

hellshake‑yano.vim offers a seamless experience that optimizes on‑screen navigation with minimal context switching, extending the ideas of existing hit‑a‑hint plugins.

Benefits

  • Low learning cost – just use the normal hjkl/wbe keys
  • No interruption of thought – no mode switches required
  • Japanese‑friendly – natural movement thanks to word segmentation
  • Works in visual mode – selection operations become more efficient

Who should try it

  • You’re comfortable with basic Vim motions but want faster on‑screen navigation
  • You use easymotion or similar plugins but dislike the mode switch
  • You don’t want to add more key bindings
  • You edit a lot of Japanese text
  • You value a seamless editing experience

If you feel that the time spent fiddling with hjkl is stealing precious moments, give hellshake‑yano.vim a try.

Discussion