Skip to content

boydaihungst/relative-motions.yazi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 

Repository files navigation

relative-motions.yazi

A Yazi plugin based about vim motions.

relative_motions_scale.mp4

(New) Smart truncate feature

(New) Smart truncate

Requirements

Installation

ya pack -a boydaihungst/relative-motions

Configuration

If you want to use the numbers directly to start a motion add this to your keymap.toml:

[[manager.prepend_keymap]]
on = [ "1" ]
run = "plugin relative-motions --args=1"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "2" ]
run = "plugin relative-motions --args=2"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "3" ]
run = "plugin relative-motions --args=3"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "4" ]
run = "plugin relative-motions --args=4"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "5" ]
run = "plugin relative-motions --args=5"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "6" ]
run = "plugin relative-motions --args=6"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "7" ]
run = "plugin relative-motions --args=7"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "8" ]
run = "plugin relative-motions --args=8"
desc = "Move in relative steps"

[[manager.prepend_keymap]]
on = [ "9" ]
run = "plugin relative-motions --args=9"
desc = "Move in relative steps"

Alternatively you can use a key to trigger a new motion without any initial value, for that add the following in keymap.toml:

[[manager.prepend_keymap]]
on = [ "m" ]
run = "plugin relative-motions"
desc = "Trigger a new relative motion"

Additionally there are a couple of initial configurations that can be given to the plugin's setup function:

Configuration Values Default Description
show_numbers relative, absolute, relative_absolute or none none Shows relative or absolute numbers before the file icon
show_motion true or false false Shows current motion in Status bar
only_motions true or false false If true, only the motion movements will be enabled, i.e., the commands for delete, cut, yank and visual selection will be disabled
smart_truncate (new) true or false true Truncate filename/folder and symlink, but keep extension. i.e, long_named_file….mkv

If you want, for example, to enable relative numbers as well as to show the motion in the status bar, add the following to Yazi's init.lua, i.e. ~/.config/yazi/init.lua:

-- ~/.config/yazi/init.lua
require("relative-motions"):setup({ show_numbers="relative", show_motion = true })

Note

The show_numbers and show_motion functionalities overwrite Current:render and Status:children_render respectively. If you have custom implementations for any of this functions you can add the provided Entity:number and Status:motion to your implementations, just check here how we are doing things.

Usage

This plugin adds the some basic vim motions like 3k, 12j, 10gg, etc. The following table show all the available motions:

Command Description
j/<Down> Move n lines down
k/<Up> Move n lines up
gj/g<Down> Go n lines down
gk/g<Up> Go n lines up
gg Go to line

Furthermore, the following operations were also added:

Command Description
v visual select
y Yank
x Cut
d Delete motion

This however must be followed by a direction, which can be j/<Down>, k/<Up> or repeating the command key, which will operate from the cursor down, e.g. 2yy will copy two files.

Finally, we also support some tab operations:

Command Description
t create n tabs
H Move n tabs left
L Move n tabs right
gt Go to the n tab
w Close tab n
W Close n tabs right
< Swap current tab with n tabs left
> Swap current tab with n tabs right
~ Swap current tab with tab n

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%