Project description
Plover_vim
This is an ambitious project that aims to make vim faster and more ergonomic for plover users
A Python library to create custom dictionaries for generating (mostly) single stroke vim commands
Aims:
highly extensible and customisable commands and translations
(mostly) single chords for virtually every vim command combination
Ability to do everything in insert mode (doesn't matter if you are in normal mode)
Motivation
Slowness of changing between insert and normal mode
slowness of fingerspelling everything
Emily's modifiers
contains all control, alt, windows, etc. combined with every symbol possible
Emily's symbols
symbols with full control over spacing, capitalization, and repetition
User202729's python dictionary library
makes coding a python dictionary significantly easier
highly recommend you check this out if you want to create your own dictionaries from scratch
Prerequisites
Download plover and find the executable
see this website for finding the location of plover depending on which platform you are using (Linux, Windows, etc.)
Installation
Now run this command to install the library
<plover_executable> -s plover_plugins install plover_vim
Modules
This repository shows you how you can import different modules from the plover_vim package to use
This provides you with control over which modules to include for your plover + vim experience!
Summary
Module
# Strokes
Short Description
Examples
relative number
1
jump to different lines (1 to 100)
14j, 31k
easy motion
2
command letter, but another stroke required for jumping
fp st
Josiah modifier
1
Emily's modifiers but only left hand fingerspelling
ctrl-w ctrl-w (change vim window),
ctrl-b w (tmux)
command letter 2
1
any command followed by any text object
ciw, gcip, yii,
(characters same as Josiah's modifiers)
vif, dt(, zz, viwp
command letter
1
any command followed by any character
fu, T?, @q, gv
(deprecated)
(characters same as Emily's modifiers)
command object
1
any command followed by any text object
ciw, gcip, yi(
(deprecated)
(characters same as Emily's symbols)
emily modifier
1
Emily's modifiers but for vim
esc ctrl ^
(deprecated)
Relative-number
What is relative numbering in vim?
relative numbering is a numbering system that allows you to move quickly between any line in the code
I recommend checking out the help menu in vim to learn more with it:
:help relativenumber
How does this module improve vim?
You can jump to different lines (up and down) in a single stroke
this is achieved by stroking a number like usual in addition to another chord
'-7R' => down 7 times
'1-6B' => up 16 times
'1EUR7' => down 71 times
note that "R" and "B" are the same keys as what you'd use in Qwerty for up and down
By default, the values for relative numbers do not go past 99 lines at a time
Usage
Easy_motion
what is easy_motion in vim?
easy motion is a
plugin that enables
"vim motions on speed!"
Aims to optimise text navigation
How does this module improve vim?
You can perform a search for a letter h as follows
<leader><leader>fhtk => H-FBLTDZ/T-BG
breaking it down:
H => h, using Josiah's modifier symbols for the left hand
-FB => <leader><leader>f
-LTDZ => unique ender for finders
T-BG => tk, this is the second stroke that takes you to the
location
Unique Ender
Modifiers
Command
How To Memorize
-LTDZ
-EU
f
Forward Backwards
How does the double sided fingerspelling work?
This plugin activates double sided fingerspelling after you stroke the starter, for a single stroke
Here are some examples (see plover_vim/easy_motion/defaults.py for the full list):
letter
right hand
left hand
b
PW
-B
x
KP
-BGS
j
SKWR
-PBLG
Usage:
put this line of code somewhere in your vimrc
let g :EasyMotion_keys = 'bdfgjklmnprstxz'
Easy_motion (Advanced):
You can use the left hand versions of the right hand vowels as follows:
(Recommended by Abby)
Letter
Old Version
New Remapped
e
E
SK
i
EU
SKW
u
U
WR
You can also use right hand fingerspelling
This will require some time to memorize
(ideas originate from realtime/realwrite and Magnum)
Letter
Map
a
-RB
c
-SZ
h
-FD
o
-GS
q
-LGTS
v
-FB
w
-FRP
y
-FPL
Usage (Advanced)
Put this line of code somewhere in your vimrc
If you want to take advantage of the full alphabet
let g :EasyMotion_keys = 'abcdefghijklmnopqrstuvwxyz'
Josiah_modifier
how does this module work?
This is basically Emily modifiers, but it supports extra functionality
The main idea is to remap these right hand fingerspelling commands to the left hand versions:
Letter
Old Version
New Remapped
e
E
SK
i
EU
SKW
u
U
WR
This leaves more space for commands using the E and U keys
The number key is also used to create more space for more options (8 altogether)
Some ideas of what you can do with this extra space
So you can prepend a command before an Emily modifier command:
ctrl-w ctrl-o = OULTZ
breaking it down:
OF = ctrl-o
U = ctrl-w
-LTZ = unique Emily modifier ender (ring finger on LT and pinky on Z)
the table below shows default settings
Chord
Prefix Command
How To Memorize
#
control(j)
E
escape
EscapE
EU
control(j) control(w)
vim splIt or wIndow
#EU
control(r)
regIster
U
control(b)
tmUx
#E
control(x)
Ex command
NA
NA
(used in a normal Emily command)
#U
NA
Usage
Command_letter_2
How does this module improve on command_letter and command_object?
Basically it replaces the need for either of them using Josiah's modifiers as a base.
It can perform a complex finder operation:
df) = KWR*UBLTDZ
breaking it down:
KWR* = ), using Josiah's / Emily's modifier for the left hand
U = f (because it is the right key for the right thumb)
B = c (B -> "blot", and hence delete)
-LTDZ = unique ender for finders (ring finger on LT and
pinky on DZ)
It can perform a miscellaneous operation:
[m = PHUTZ
Breaking it down:
PH = m, using Josiah's modifier for the left hand
U = [, idea from tpope's unimpaired
-TZ = unique ender for miscellaneous (ring finger on T and
pinky on Z)
It can perform a "command-object" operation:
caw = WUBTDZ
Breaking it down:
W = w, using Josiah's modifier for the left hand
U = a, U is more "outside" in position than E, so we use E
= i cause it is more "inner" in position
B = c, "blot" hence delete
TDZ = unique ender for command object (ring finger on T,
pinky on DZ)
The table below shows default settings
"Customisable" commands can be filled in for personal useage
category
Unique Ender
Modifiers
Command
How To Memorise
finders
-LTDZ
-FPB
customisable
-FP
customisable
-FB
customisable
-PB
customisable
-F
v
Visualize
-P
y
coPy
-B
c
Blot
U
f
the right key
E
shift(F)
the left key
EU
customisable
#E
shift(T)
the left key with #
#U
t
the right key with #
#EU
customisable
#
customisable
miscallaneous
-TZ
-FPB
q
liSeN
-FP
shift(at)
macros
-FB
customisable
-PB
z
zeN
-F
g
the good Spot
-P
r
rePlace
-B
m
marBg
customisable
#-B
apostrophe
similar to mark
#-P
repeat
rePeat
-E
[
E is to the left of U
-U
]
U is to the right of E
command object
-TDZ
-FPB
equal
-FP
ys
coPy Furround
-FB
cs
Blot Furround
-PB
gc
commeNt
-F
v
Fisualize
-P
y
coPy
-B
c
Blot
""
gU
#-FPB
v~
#-FP
S
#-FB
ds
#-PB
gb
#-F
vp
visualize and paste!
#-P
"
y
#-B
customisable
#
gu
E
i
Inner
EU
O
U
a
Around
""
Usage
Command-letter (deprecated)
How does this module improve vim?
You can perform any command followed by a letter in a single stroke
for example:
f) = KWR*FLTDZ
breaking it down:
KWR* = ), using emily's modifier symbols for the left hand
F = f
-LTDZ = unique ender for finders (ring finger on LT and
pinky on DZ)
The table below shows default settings
"Customisable" commands can be filled in for personal useage
category
Unique Ender
Modifiers
Command
How To Memorise
finders
-LTDZ
-FPB
customisable
-FP
customisable
-FB
(used in easymotion)
-PB
shift(t)
Previous Backwards
-F
f
Forwards
-P
t
Previous
-B
shift(f)
Backwards
""
escaped commands
miscallaneous
-TZ
-FPB
q
liSeN
-FP
shift(at)
macros
-FB
customisable
-PB
z
zeN
-F
g
the good Spot
-P
r
rePlace
-B
m
marBg
customisable
Usage
copy templates/command_letter/simple.py and add it to your
dictionaries for default configuration
copy templates/command_letter/customised.py for a more
customised experience
note that (shift(at)) is required to output @ because raw
keyboard input is
weird
See note on control(j)
command-object (deprecated)
How does this module improve vim?
You can perform any command followed by a text "object" in a
single stroke for example:
daw = STPRARLD
breaking it down:
STPR = unique starter
A = a
-RL = w, (see "objects" in
command_object/defaults.py)
-D = d
yi( = STPROFPLZ
STPR = unique starter
O = i
-FPL = (, using emily's symbols for the right hand
-Z = y
The table below shows the default mappings
"Customisable" commands can be filled in for personal useage
note: AO combinations can be combined with other modifiers
Unique starter
Modifiers
Command
How To Memorise
Plugin Requirements
STPR
-T
g c
commenTary
tpope/vim-commentary
-D
d
Delete
-S
y s
Surround
tpope/vim-surround
-Z
y
xyZ
-TD
customisable
-DZ
d s
Delete Surround
tpope/vim-surround
-SZ
v
viSualiZe
-TS
customisable
*T
g b
commenTary
numToStr/Comment.nvim
*D
customisable
*S
shift(s)
Surround
tpope/vim-surround
*Z
customisable
*TD
customisable
*DZ
customisable
*SZ
customisable
*TS
customisable
customisable
A
a
around
O
i
AO
customisable
""
Limitations
some command + motion combinations must be stroked in two, for
example:
Usage
copy templates/command_object/simple.py and add it to your
dictionaries for default configuration
copy templates/command_object/customised.py for a more
customised experience
note that (shift(s)) is required to output S because raw
keyboard input is
weird
See note on control(j)
Emily-modifier (deprecated)
How does this module improve upon the original ?
You can prepend an escape to the command
Commands like ctrl^ no longer require shift to be pressed related
issue
Usage
copy templates/Emily_modifier/simple.py and add it to your
dictionaries for a simple configuration
copy templates/Emily_modifier/customised.py for a more
customised experience
Control(J)
Allows you to execute any (most) commands as if you are from normal
mode
Sample .vimrc config (thanks
User202729 )!
"do nothing in normal mode
nore < c - j > < nop>
"escape insert mode, then return to insert mode afterwards
inore < c - j > < c - \>< c - o >
"escape command mode
cnoremap < c - j > < esc>
if ! has( 'nvim' )
" escape terminal mode, then return to terminal mode
set termwinkey=< c - j >
else
" escape terminal mode, does not return to terminal mode :<
tnoremap < c - j > < C- \>< C- n >
endif
Developers
This section shows how you can have an editable version of this project
Firstly, fork this repository (in GitHub), then clone it:
git clone https://github.com/your_user_name/plover_vim
cd into this repo
Then install for use!
Note that "plover" is the executable that you downloaded to make Plover work in the first place
See this [[https://plover.readthedocs.io/en/latest/cli_reference.html][website]] for the different locations depending on which platform you are using (Linux, Windows, etc)
cd plover_vim
plover -s plover_plugins install -e .
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages .
Source Distribution
Built Distribution
File details
Details for the file plover_vim-0.4.0.tar.gz
.
File metadata
Download URL:
plover_vim-0.4.0.tar.gz
Upload date:
Oct 10, 2022
Size: 41.1 kB
Tags: Source
Uploaded using Trusted Publishing? No
Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Hashes for plover_vim-0.4.0.tar.gz
Algorithm
Hash digest
SHA256
fe37f1e644a1b5176a2883106a68bcf965e39facc2d6ed6c9840e29af5fcb2fa
Copy
MD5
9622b53bee725624b5e65ba838584be4
Copy
BLAKE2b-256
ac2941597b9a298185d5a4889a96ce32fe4c7939e03c2d326a2c0bf93d0bbeb7
Copy
See more details on using hashes here.
File details
Details for the file plover_vim-0.4.0-py3-none-any.whl
.
File metadata
Download URL:
plover_vim-0.4.0-py3-none-any.whl
Upload date:
Oct 10, 2022
Size: 49.1 kB
Tags: Python 3
Uploaded using Trusted Publishing? No
Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Hashes for plover_vim-0.4.0-py3-none-any.whl
Algorithm
Hash digest
SHA256
68566a2284f3cb1518a108a2226e187cdd6146250ae49f21ee367a59274d5643
Copy
MD5
f1e88f0d325a026ce30b3e9f5edefe17
Copy
BLAKE2b-256
05db7598e0f6bcdf6cccabe2dc434dc9c2874a78b313f110ae3b923294825b15
Copy
See more details on using hashes here.