# 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
- e.g. ciw, gcip, ya}
# Quick links
- See [speedrun video](https://www.youtube.com/watch?v=8-oDPhmpN9g) (2:50 min).
- For interactive learning (`highly recommended`) see [plover-vim-tutor](https://github.com/Josiah-tan/plover-vim-tutor).
# 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](https://github.com/EPLHREU/emily-modifiers)
- contains all control, alt, windows, etc. combined with every symbol possible
- Emily's [symbols](https://github.com/EPLHREU/emily-symbols)
- symbols with full control over spacing, capitalization, and repetition
- User202729's [python dictionary library](https://github.com/user202729/plover-python-dictionary-lib)
- 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](https://plover.readthedocs.io/en/latest/cli_reference.html) 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
``` bash
<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 | <leader><leader>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
```
- it is good stuff
### 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
- First, make sure to install plover_vim into plover
- see [Installation](#Installation) for more instructions
- It is recommended to remap top left S key as #
- For a simple configuration see [templates/relative_number/customised.py](templates/relative_number/customised.py).
- For my configuration see [templates/Josiah/customised.py](templates/Josiah/customised.py)
## Easy_motion
### what is easy_motion in vim?
- easy motion is a
[plugin](https://github.com/easymotion/vim-easymotion) 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 | <leader><leader>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](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
``` vim
let g:EasyMotion_keys = 'bdfgjklmnprstxz'
```
- copy [templates/easy_motion/simple.py](templates/easy_motion/simple.py) and add it to your dictionaries for a simple configuration
- copy [templates/easy_motion/customised.py](templates/easy_motion/customised.py) and add it to your dictionaries for a customisable configuration
- see note on [Control(j)](#Control(J))
### 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
``` vim
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
- copy [templates/Josiah_modifier/simple.py](templates/Josiah_modifier/simple.py) and add it to your dictionaries for a simple configuration
- copy [templates/Josiah_modifier/customised.py](templates/Josiah_modifier/customised.py) and add it to your dictionaries for a customisable configuration
- see note on [Control(j)](#Control(j))
## 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 | -FP | shift(at) | macros |
| | | #-FP | q | record macros |
| | | -FB | cs | blot Furround |
| | | #-FB | ds | blot Furround |
| | | -FPB | z | zeN |
| | | -PB | gl | lioN |
| | | #-PB | gL | lioN |
| | | -F | g | the good Spot |
| | | #-F | shift(S) | Furround |
| | | -P | r | rePlace |
| | | -B | apostrophe | go marBg |
| | | | customisable | |
| | | #-B | m | similar to mark |
| | | #-P | repeat | rePeat |
| | | -EFP | [ | E is to the left of U |
| | | -UFP | ] | U is to the right of E |
| | | #EU | " | register |
| command object | -LTSZ | -FPB | equal | |
| | | -FP | ys | coPy Furround |
| | | -FB | customisable | |
| | | -PB | gc | commeNt |
| | | -F | v | Fisualize |
| | | -P | y | coPy |
| | | -B | c | Blot |
| | | "" | gU | |
| | | #-FPB | v~ | |
| | | #-FP | customisable | |
| | | #-FB | customisable | |
| | | #-PB | gb | |
| | | #-F | vp | visualize and paste! |
| | | #-P | " | y |
| | | #-B | customisable | |
| | | # | gu | |
| | E | | i | Inner |
| | EU | | O | |
| | U | | a | Around |
| | | | "" | |
### Usage
- First, make sure to install plover_vim into plover
- see [Installation](#Installation) for more instructions
- copy [templates/command_letter_2/simple.py](templates/command_letter_2/simple.py) and add it to your dictionaries for a simple configuration
- copy [templates/command_letter_2/customised.py](templates/command_letter_2/customised.py) and add it to your dictionaries for a customisable configuration
- It is recommended to remap top left S key as #
## 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](https://github.com/openstenoproject/plover/issues/1465)
- See note on [control(j)](#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:
- ct=
### 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](https://github.com/openstenoproject/plover/issues/1465)
- See note on [control(j)](#Controlj)
## Emily-modifier (deprecated)
### How does this module improve upon the [original](https://github.com/EPLHREU/emily-modifiers)?
- You can prepend an escape to the command
- Commands like ctrl\^ no longer require shift to be pressed [related
issue](https://github.com/openstenoproject/plover/issues/1465)
### 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
- see note on [control(j)](#Control(J))
# Control(J)
- Allows you to execute any (most) commands as if you are from normal
mode
- Sample .vimrc config (thanks
[User202729](https://github.com/openstenoproject/plover/discussions/1350#discussioncomment-1905781))!
``` vim
"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:
``` bash
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)
``` bash
cd plover_vim
plover -s plover_plugins install -e .
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Josiah-tan/plover-vim",
"name": "plover-vim",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "plover plover_plugin vim",
"author": "Josiah Tan",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/0d/29/316a43680c272a0a032ea7429a87e8d8e9ea8e63e42c68fba34df09ab68a/plover_vim-0.12.0.tar.gz",
"platform": null,
"description": "# Plover_vim\n\n- This is an ambitious project that aims to make vim faster and more ergonomic for plover users\n- A Python library to create custom dictionaries for generating (mostly) single stroke vim commands\n\t- e.g. ciw, gcip, ya}\n\n# Quick links\n\n- See [speedrun video](https://www.youtube.com/watch?v=8-oDPhmpN9g) (2:50 min).\n- For interactive learning (`highly recommended`) see [plover-vim-tutor](https://github.com/Josiah-tan/plover-vim-tutor).\n\n# Aims:\n- highly extensible and customisable commands and translations\n- (mostly) single chords for virtually every vim command combination\n- Ability to do everything in insert mode (doesn't matter if you are in normal mode)\n\n# Motivation\n- Slowness of changing between insert and normal mode\n- slowness of fingerspelling everything\n- Emily's [modifiers](https://github.com/EPLHREU/emily-modifiers)\n\t- contains all control, alt, windows, etc. combined with every symbol possible\n- Emily's [symbols](https://github.com/EPLHREU/emily-symbols)\n\t- symbols with full control over spacing, capitalization, and repetition\n- User202729's [python dictionary library](https://github.com/user202729/plover-python-dictionary-lib)\n\t- makes coding a python dictionary significantly easier\n\t- highly recommend you check this out if you want to create your own dictionaries from scratch\n\n# Prerequisites\n- Download plover and find the executable\n\t- see this [website](https://plover.readthedocs.io/en/latest/cli_reference.html) for finding the location of plover depending on which platform you are using (Linux, Windows, etc.)\n\n# Installation\n\n- Now run this command to install the library\n``` bash\n<plover_executable> -s plover_plugins install plover_vim\n```\n\n# Modules\n- This repository shows you how you can import different modules from the plover_vim package to use\n- This provides you with control over which modules to include for your plover + vim experience!\n\n## Summary\n| Module | # Strokes | Short Description | Examples |\n|------------------|-----------|---------------------------------------------------------|------------------------------------|\n| relative number | 1 | jump to different lines (1 to 100) | 14j, 31k |\n| easy motion | 2 | command letter, but another stroke required for jumping | <leader><leader>fp st |\n| Josiah modifier | 1 | Emily's modifiers but only left hand fingerspelling | ctrl-w ctrl-w (change vim window), |\n| | | | ctrl-b w (tmux) |\n| command letter 2 | 1 | any command followed by any text object | ciw, gcip, yii, |\n| | | (characters same as Josiah's modifiers) | vif, dt(, zz, viwp |\n| command letter | 1 | any command followed by any character | fu, T?, @q, gv |\n| (deprecated) | | (characters same as Emily's modifiers) | |\n| command object | 1 | any command followed by any text object | ciw, gcip, yi( |\n| (deprecated) | | (characters same as Emily's symbols) | |\n| emily modifier | 1 | Emily's modifiers but for vim | esc ctrl ^ |\n| (deprecated) | | | |\n\n## Relative-number\n\n### What is relative numbering in vim?\n\n- relative numbering is a numbering system that allows you to move quickly between any line in the code\n- I recommend checking out the help menu in vim to learn more with it:\n``` \n:help relativenumber\n```\n- it is good stuff\n\n### How does this module improve vim?\n\n- You can jump to different lines (up and down) in a single stroke\n- this is achieved by stroking a number like usual in addition to another chord\n - \\'-7R\\' =\\> down 7 times\n - \\'1-6B\\' =\\> up 16 times\n - \\'1EUR7\\' =\\> down 71 times\n- note that \"R\" and \"B\" are the same keys as what you'd use in Qwerty for up and down\n- By default, the values for relative numbers do not go past 99 lines at a time\n\n### Usage\n\n- First, make sure to install plover_vim into plover\n\t- see [Installation](#Installation) for more instructions\n- It is recommended to remap top left S key as #\n- For a simple configuration see [templates/relative_number/customised.py](templates/relative_number/customised.py).\n- For my configuration see [templates/Josiah/customised.py](templates/Josiah/customised.py)\n\n## Easy_motion\n\n### what is easy_motion in vim?\n\n- easy motion is a\n [plugin](https://github.com/easymotion/vim-easymotion) that enables\n \\\"vim motions on speed!\\\"\n- Aims to optimise text navigation\n\n### How does this module improve vim?\n\n- You can perform a search for a letter h as follows\n - \\<leader\\>\\<leader\\>fhtk =\\> H-FBLTDZ/T-BG\n - breaking it down:\n - H =\\> h, using Josiah\\'s modifier symbols for the left hand\n - -FB =\\> \\<leader\\>\\<leader\\>f\n - -LTDZ =\\> unique ender for finders\n - T-BG =\\> tk, this is the second stroke that takes you to the\n location\n\n| Unique Ender | Modifiers | Command | How To Memorize |\n|--------------|-----------|-------------------|-------------------|\n| -LTDZ | -EU | <leader><leader>f | Forward Backwards |\n\n### How does the double sided fingerspelling work?\n\n- This plugin activates double sided fingerspelling after you stroke the starter, for a single stroke\n- Here are some examples (see [plover_vim/easy_motion/defaults.py](plover_vim/easy_motion/defaults.py) for the full list):\n\n| letter | right hand | left hand |\n|--------|------------|-----------|\n| b | PW | -B |\n| x | KP | -BGS |\n| j | SKWR | -PBLG |\n\n### Usage:\n- put this line of code somewhere in your vimrc\n\n``` vim\nlet g:EasyMotion_keys = 'bdfgjklmnprstxz'\n```\n\n- copy [templates/easy_motion/simple.py](templates/easy_motion/simple.py) and add it to your dictionaries for a simple configuration\n- copy [templates/easy_motion/customised.py](templates/easy_motion/customised.py) and add it to your dictionaries for a customisable configuration\n- see note on [Control(j)](#Control(J))\n\n\n### Easy_motion (Advanced):\n\n- You can use the left hand versions of the right hand vowels as follows:\n- (Recommended by Abby)\n\n| Letter | Old Version | New Remapped |\n|--------|-------------|--------------|\n| e | E | SK |\n| i | EU | SKW |\n| u | U | WR |\n\n- You can also use right hand fingerspelling\n- This will require some time to memorize\n- (ideas originate from realtime/realwrite and Magnum)\n\n| Letter | Map |\n|--------|-------|\n| a | -RB |\n| c | -SZ |\n| h | -FD |\n| o | -GS |\n| q | -LGTS |\n| v | -FB |\n| w | -FRP |\n| y | -FPL |\n\n### Usage (Advanced)\n\n- Put this line of code somewhere in your vimrc \n\t- If you want to take advantage of the full alphabet\n\n``` vim\nlet g:EasyMotion_keys = 'abcdefghijklmnopqrstuvwxyz'\n```\n\n\n## Josiah_modifier\n\n### how does this module work?\n\n- This is basically Emily modifiers, but it supports extra functionality\n- The main idea is to remap these right hand fingerspelling commands to the left hand versions:\n\n| Letter | Old Version | New Remapped |\n|--------|-------------|--------------|\n| e | E | SK |\n| i | EU | SKW |\n| u | U | WR |\n\n- This leaves more space for commands using the E and U keys\n- The number key is also used to create more space for more options (8 altogether)\n\n### Some ideas of what you can do with this extra space\n\n- So you can prepend a command before an Emily modifier command:\n\t- ctrl-w ctrl-o = OULTZ\n\t- breaking it down:\n\t\t- OF = ctrl-o\n\t\t- U = ctrl-w\n\t\t- -LTZ = unique Emily modifier ender (ring finger on LT and pinky on Z)\n- the table below shows default settings\n\n| Chord | Prefix Command | How To Memorize |\n|-------|-----------------------|----------------------------------|\n| # | control(j) | |\n| E | escape | EscapE |\n| EU | control(j) control(w) | vim splIt or wIndow |\n| #EU | control(r) | regIster |\n| U | control(b) | tmUx |\n| #E | control(x) | Ex command |\n| NA | NA | (used in a normal Emily command) |\n| #U | NA | |\n\n### Usage\n\n- copy [templates/Josiah_modifier/simple.py](templates/Josiah_modifier/simple.py) and add it to your dictionaries for a simple configuration\n- copy [templates/Josiah_modifier/customised.py](templates/Josiah_modifier/customised.py) and add it to your dictionaries for a customisable configuration\n- see note on [Control(j)](#Control(j))\n\n## Command_letter_2\n\n### How does this module improve on command_letter and command_object?\n\n- Basically it replaces the need for either of them using Josiah's modifiers as a base.\n- It can perform a complex finder operation:\n - df) = KWR\\*UBLTDZ\n - breaking it down:\n - KWR\\* = ), using Josiah\\'s / Emily's modifier for the left hand\n - U = f (because it is the right key for the right thumb)\n - B = c (B -> \"blot\", and hence delete)\n - -LTDZ = unique ender for finders (ring finger on LT and\n pinky on DZ)\n- It can perform a miscellaneous operation:\n - \\[m = PHUTZ\n - Breaking it down:\n - PH = m, using Josiah\\'s modifier for the left hand\n - U = \\[, idea from tpope\\'s unimpaired\n - -TZ = unique ender for miscellaneous (ring finger on T and\n pinky on Z)\n- It can perform a \\\"command-object\\\" operation:\n - caw = WUBTDZ\n - Breaking it down:\n - W = w, using Josiah\\'s modifier for the left hand\n - U = a, U is more \\\"outside\\\" in position than E, so we use E\n = i cause it is more \\\"inner\\\" in position\n - B = c, \\\"blot\\\" hence delete\n - TDZ = unique ender for command object (ring finger on T,\n pinky on DZ)\n- The table below shows default settings\n - \\\"Customisable\\\" commands can be filled in for personal useage\n\n| category | Unique Ender | Modifiers | Command | How To Memorise |\n| ---------------- | -------------- | ----------- | -------------- | ------------------------ |\n| finders | -LTDZ | -FPB | customisable | |\n| | | -FP | customisable | |\n| | | -FB | customisable | |\n| | | -PB | customisable | |\n| | | -F | v | Visualize |\n| | | -P | y | coPy |\n| | | -B | c | Blot |\n| | U | | f | the right key |\n| | E | | shift(F) | the left key |\n| | EU | | customisable | |\n| | #E | | shift(T) | the left key with # |\n| | #U | | t | the right key with # |\n| | #EU | | customisable | |\n| | # | | customisable | |\n| miscallaneous | -TZ | -FP | shift(at) | macros |\n| | | #-FP | q | record macros |\n| | | -FB | cs | blot Furround |\n| | | #-FB | ds | blot Furround |\n| | | -FPB | z | zeN |\n| | | -PB | gl | lioN |\n| | | #-PB | gL | lioN |\n| | | -F | g | the good Spot |\n| | | #-F | shift(S) | Furround |\n| | | -P | r | rePlace |\n| | | -B | apostrophe | go marBg |\n| | | | customisable | |\n| | | #-B | m | similar to mark |\n| | | #-P | repeat | rePeat |\n| | | -EFP | [ | E is to the left of U |\n| | | -UFP | ] | U is to the right of E |\n| | | #EU | \" | register |\n| command object | -LTSZ | -FPB | equal | |\n| | | -FP | ys | coPy Furround |\n| | | -FB | customisable | |\n| | | -PB | gc | commeNt |\n| | | -F | v | Fisualize |\n| | | -P | y | coPy |\n| | | -B | c | Blot |\n| | | \"\" | gU | |\n| | | #-FPB | v~ | |\n| | | #-FP | customisable | |\n| | | #-FB | customisable | |\n| | | #-PB | gb | |\n| | | #-F | vp | visualize and paste! |\n| | | #-P | \" | y |\n| | | #-B | customisable | |\n| | | # | gu | |\n| | E | | i | Inner |\n| | EU | | O | |\n| | U | | a | Around |\n| | | | \"\" | |\n\n### Usage\n- First, make sure to install plover_vim into plover\n\t- see [Installation](#Installation) for more instructions\n- copy [templates/command_letter_2/simple.py](templates/command_letter_2/simple.py) and add it to your dictionaries for a simple configuration\n- copy [templates/command_letter_2/customised.py](templates/command_letter_2/customised.py) and add it to your dictionaries for a customisable configuration\n- It is recommended to remap top left S key as #\n\n## Command-letter (deprecated)\n\n### How does this module improve vim?\n\n- You can perform any command followed by a letter in a single stroke\n for example:\n - f\\) = KWR\\*FLTDZ\n - breaking it down:\n - KWR\\* = ), using emily\\'s modifier symbols for the left hand\n - F = f\n - -LTDZ = unique ender for finders (ring finger on LT and\n pinky on DZ)\n- The table below shows default settings\n - \\\"Customisable\\\" commands can be filled in for personal useage\n\n| category | Unique Ender | Modifiers | Command | How To Memorise |\n| --------------- | -------------- | ----------- | -------------- | ---------------------- |\n| finders | -LTDZ | -FPB | customisable | |\n| | | -FP | customisable | |\n| | | -FB | | (used in easymotion) |\n| | | -PB | shift(t) | Previous Backwards |\n| | | -F | f | Forwards |\n| | | -P | t | Previous |\n| | | -B | shift(f) | Backwards |\n| | | | \"\" | escaped commands |\n| miscallaneous | -TZ | -FPB | q | liSeN |\n| | | -FP | shift(at) | macros |\n| | | -FB | customisable | |\n| | | -PB | z | zeN |\n| | | -F | g | the good Spot |\n| | | -P | r | rePlace |\n| | | -B | m | marBg |\n| | | | customisable | |\n\n### Usage\n\n- copy templates/command_letter/simple.py and add it to your\n dictionaries for default configuration\n- copy templates/command_letter/customised.py for a more\n customised experience\n - note that (shift(at)) is required to output @ because raw\n keyboard input is\n [weird](https://github.com/openstenoproject/plover/issues/1465)\n - See note on [control(j)](#Control(j))\n\n## command-object (deprecated)\n\n### How does this module improve vim?\n\n- You can perform any command followed by a text \\\"object\\\" in a\n single stroke for example:\n - daw = STPRARLD\n - breaking it down:\n - STPR = unique starter\n - A = a\n - -RL = w, (see \\\"objects\\\" in\n command_object/defaults.py)\n - -D = d\n - yi( = STPROFPLZ\n - STPR = unique starter\n - O = i\n - -FPL = (, using emily\\'s symbols for the right hand\n - -Z = y\n- The table below shows the default mappings\n - \\\"Customisable\\\" commands can be filled in for personal useage\n - note: AO combinations can be combined with other modifiers\n\n| Unique starter | Modifiers | Command | How To Memorise | Plugin Requirements |\n|----------------|-----------|--------------|-----------------|-----------------------|\n| STPR | -T | g c | commenTary | tpope/vim-commentary |\n| | -D | d | Delete | |\n| | -S | y s | Surround | tpope/vim-surround |\n| | -Z | y | xyZ | |\n| | -TD | customisable | | |\n| | -DZ | d s | Delete Surround | tpope/vim-surround |\n| | -SZ | v | viSualiZe | |\n| | -TS | customisable | | |\n| | *T | g b | commenTary | numToStr/Comment.nvim |\n| | *D | customisable | | |\n| | *S | shift(s) | Surround | tpope/vim-surround |\n| | *Z | customisable | | |\n| | *TD | customisable | | |\n| | *DZ | customisable | | |\n| | *SZ | customisable | | |\n| | *TS | customisable | | |\n| | | customisable | | |\n| | A | a | around | |\n| | O | i | | |\n| | AO | customisable | | |\n| | | \"\" | | |\n\n\n### Limitations\n\n- some command + motion combinations must be stroked in two, for\n example:\n - ct=\n\n### Usage\n\n- copy templates/command_object/simple.py and add it to your\n dictionaries for default configuration\n- copy templates/command_object/customised.py for a more\n customised experience\n - note that (shift(s)) is required to output S because raw\n keyboard input is\n [weird](https://github.com/openstenoproject/plover/issues/1465)\n - See note on [control(j)](#Controlj)\n\n## Emily-modifier (deprecated)\n\n### How does this module improve upon the [original](https://github.com/EPLHREU/emily-modifiers)?\n\n- You can prepend an escape to the command\n- Commands like ctrl\\^ no longer require shift to be pressed [related\n issue](https://github.com/openstenoproject/plover/issues/1465)\n\n### Usage\n\n- copy templates/Emily_modifier/simple.py and add it to your\n dictionaries for a simple configuration\n- copy templates/Emily_modifier/customised.py for a more\n customised experience\n - see note on [control(j)](#Control(J))\n\n\n# Control(J)\n- Allows you to execute any (most) commands as if you are from normal\n mode\n- Sample .vimrc config (thanks\n [User202729](https://github.com/openstenoproject/plover/discussions/1350#discussioncomment-1905781))!\n\n``` vim\n\"do nothing in normal mode\nnore <c-j> <nop> \n\"escape insert mode, then return to insert mode afterwards\ninore <c-j> <c-\\><c-o>\n\"escape command mode\ncnoremap <c-j> <esc>\n\nif !has('nvim')\n \" escape terminal mode, then return to terminal mode\n set termwinkey=<c-j>\nelse\n \" escape terminal mode, does not return to terminal mode :<\n tnoremap <c-j> <C-\\><C-n>\nendif\n```\n\n# Developers\n\n- This section shows how you can have an editable version of this project\n- Firstly, fork this repository (in GitHub), then clone it:\n\n``` bash\ngit clone https://github.com/your_user_name/plover_vim\n```\n\n- cd into this repo\n- Then install for use!\n\t- Note that \"plover\" is the executable that you downloaded to make Plover work in the first place\n\t- 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)\n\n``` bash\ncd plover_vim\nplover -s plover_plugins install -e .\n```\n",
"bugtrack_url": null,
"license": "GNU General Public License v3 (GPLv3)",
"summary": "(mostly) single stroke vim commands",
"version": "0.12.0",
"project_urls": {
"Homepage": "https://github.com/Josiah-tan/plover-vim"
},
"split_keywords": [
"plover",
"plover_plugin",
"vim"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6de2a0ad11eb2d18b2b06cafc8392121e631400a5b27d2dded949805ac69548a",
"md5": "6fb7d84e0b47c524f26d988b7c81c6c3",
"sha256": "aae91931a516e14a8bf9d4800d871d7f51aa53426bdf469a0aeb606420907244"
},
"downloads": -1,
"filename": "plover_vim-0.12.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6fb7d84e0b47c524f26d988b7c81c6c3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 50727,
"upload_time": "2024-01-16T09:26:06",
"upload_time_iso_8601": "2024-01-16T09:26:06.223464Z",
"url": "https://files.pythonhosted.org/packages/6d/e2/a0ad11eb2d18b2b06cafc8392121e631400a5b27d2dded949805ac69548a/plover_vim-0.12.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0d29316a43680c272a0a032ea7429a87e8d8e9ea8e63e42c68fba34df09ab68a",
"md5": "0f81e2b2ff8550782cc95661e70ac873",
"sha256": "cd892bff5b29bf8dbc7b622b8ac131b88958e7912f27d9bd6b3afa494622dff3"
},
"downloads": -1,
"filename": "plover_vim-0.12.0.tar.gz",
"has_sig": false,
"md5_digest": "0f81e2b2ff8550782cc95661e70ac873",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 39376,
"upload_time": "2024-01-16T09:26:08",
"upload_time_iso_8601": "2024-01-16T09:26:08.783461Z",
"url": "https://files.pythonhosted.org/packages/0d/29/316a43680c272a0a032ea7429a87e8d8e9ea8e63e42c68fba34df09ab68a/plover_vim-0.12.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-16 09:26:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Josiah-tan",
"github_project": "plover-vim",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"tox": true,
"lcname": "plover-vim"
}