Package: plover-vim
Plover_vimThis is an ambitious project that aims to make vim faster and more ergonomic for plover usersA Python library to create custom dictionaries for generating (mostly) single stroke vim commandse.g. ciw, gcip, ya}Quick linksSeespeedrun video(2:50 min).For interactive learning (highly recommended) seeplover-vim-tutor.Aims:highly extensible and customisable commands and translations(mostly) single chords for virtually every vim command combinationAbility to do everything in insert mode (doesn't matter if you are in normal mode)MotivationSlowness of changing between insert and normal modeslowness of fingerspelling everythingEmily'smodifierscontains all control, alt, windows, etc. combined with every symbol possibleEmily'ssymbolssymbols with full control over spacing, capitalization, and repetitionUser202729'spython dictionary librarymakes coding a python dictionary significantly easierhighly recommend you check this out if you want to create your own dictionaries from scratchPrerequisitesDownload plover and find the executablesee thiswebsitefor finding the location of plover depending on which platform you are using (Linux, Windows, etc.)InstallationNow run this command to install the library<plover_executable>-splover_pluginsinstallplover_vimModulesThis repository shows you how you can import different modules from the plover_vim package to useThis provides you with control over which modules to include for your plover + vim experience!SummaryModule# StrokesShort DescriptionExamplesrelative number1jump to different lines (1 to 100)14j, 31keasy motion2command letter, but another stroke required for jumpingfp stJosiah modifier1Emily's modifiers but only left hand fingerspellingctrl-w ctrl-w (change vim window),ctrl-b w (tmux)command letter 21any command followed by any text objectciw, gcip, yii,(characters same as Josiah's modifiers)vif, dt(, zz, viwpcommand letter1any command followed by any characterfu, T?, @q, gv(deprecated)(characters same as Emily's modifiers)command object1any command followed by any text objectciw, gcip, yi((deprecated)(characters same as Emily's symbols)emily modifier1Emily's modifiers but for vimesc ctrl ^(deprecated)Relative-numberWhat is relative numbering in vim?relative numbering is a numbering system that allows you to move quickly between any line in the codeI recommend checking out the help menu in vim to learn more with it::help relativenumberit is good stuffHow does this module improve vim?You can jump to different lines (up and down) in a single strokethis 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 timesnote that "R" and "B" are the same keys as what you'd use in Qwerty for up and downBy default, the values for relative numbers do not go past 99 lines at a timeUsageFirst, make sure to install plover_vim into ploverseeInstallationfor more instructionsIt is recommended to remap top left S key as #For a simple configuration seetemplates/relative_number/customised.py.For my configuration seetemplates/Josiah/customised.pyEasy_motionwhat is easy_motion in vim?easy motion is apluginthat enables
"vim motions on speed!"Aims to optimise text navigationHow does this module improve vim?You can perform a search for a letter h as follows<leader><leader>fhtk => H-FBLTDZ/T-BGbreaking it down:H => h, using Josiah's modifier symbols for the left hand-FB => <leader><leader>f-LTDZ => unique ender for findersT-BG => tk, this is the second stroke that takes you to the
locationUnique EnderModifiersCommandHow To Memorize-LTDZ-EUfForward BackwardsHow does the double sided fingerspelling work?This plugin activates double sided fingerspelling after you stroke the starter, for a single strokeHere are some examples (seeplover_vim/easy_motion/defaults.pyfor the full list):letterright handleft handbPW-BxKP-BGSjSKWR-PBLGUsage:put this line of code somewhere in your vimrcletg:EasyMotion_keys='bdfgjklmnprstxz'copytemplates/easy_motion/simple.pyand add it to your dictionaries for a simple configurationcopytemplates/easy_motion/customised.pyand add it to your dictionaries for a customisable configurationsee note onControl(j)Easy_motion (Advanced):You can use the left hand versions of the right hand vowels as follows:(Recommended by Abby)LetterOld VersionNew RemappedeESKiEUSKWuUWRYou can also use right hand fingerspellingThis will require some time to memorize(ideas originate from realtime/realwrite and Magnum)LetterMapa-RBc-SZh-FDo-GSq-LGTSv-FBw-FRPy-FPLUsage (Advanced)Put this line of code somewhere in your vimrcIf you want to take advantage of the full alphabetletg:EasyMotion_keys='abcdefghijklmnopqrstuvwxyz'Josiah_modifierhow does this module work?This is basically Emily modifiers, but it supports extra functionalityThe main idea is to remap these right hand fingerspelling commands to the left hand versions:LetterOld VersionNew RemappedeESKiEUSKWuUWRThis leaves more space for commands using the E and U keysThe number key is also used to create more space for more options (8 altogether)Some ideas of what you can do with this extra spaceSo you can prepend a command before an Emily modifier command:ctrl-w ctrl-o = OULTZbreaking it down:OF = ctrl-oU = ctrl-w-LTZ = unique Emily modifier ender (ring finger on LT and pinky on Z)the table below shows default settingsChordPrefix CommandHow To Memorize#control(j)EescapeEscapEEUcontrol(j) control(w)vim splIt or wIndow#EUcontrol(r)regIsterUcontrol(b)tmUx#Econtrol(x)Ex commandNANA(used in a normal Emily command)#UNAUsagecopytemplates/Josiah_modifier/simple.pyand add it to your dictionaries for a simple configurationcopytemplates/Josiah_modifier/customised.pyand add it to your dictionaries for a customisable configurationsee note onControl(j)Command_letter_2How 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*UBLTDZbreaking it down:KWR* = ), using Josiah's / Emily's modifier for the left handU = 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 = PHUTZBreaking it down:PH = m, using Josiah's modifier for the left handU = [, 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 = WUBTDZBreaking it down:W = w, using Josiah's modifier for the left handU = a, U is more "outside" in position than E, so we use E
= i cause it is more "inner" in positionB = c, "blot" hence deleteTDZ = 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 useagecategoryUnique EnderModifiersCommandHow To Memorisefinders-LTDZ-FPBcustomisable-FPcustomisable-FBcustomisable-PBcustomisable-FvVisualize-PycoPy-BcBlotUfthe right keyEshift(F)the left keyEUcustomisable#Eshift(T)the left key with ##Utthe right key with ##EUcustomisable#customisablemiscallaneous-TZ-FPshift(at)macros#-FPqrecord macros-FBcsblot Furround#-FBdsblot Furround-FPBzzeN-PBgllioN#-PBgLlioN-Fgthe good Spot#-Fshift(S)Furround-PrrePlace-Bapostrophego marBgcustomisable#-Bmsimilar to mark#-PrepeatrePeat-EFP[E is to the left of U-UFP]U is to the right of E#EU"registercommand object-LTSZ-FPBequal-FPyscoPy Furround-FBcustomisable-PBgccommeNt-FvFisualize-PycoPy-BcBlot""gU#-FPBv~#-FPcustomisable#-FBcustomisable#-PBgb#-Fvpvisualize and paste!#-P"y#-Bcustomisable#guEiInnerEUOUaAround""UsageFirst, make sure to install plover_vim into ploverseeInstallationfor more instructionscopytemplates/command_letter_2/simple.pyand add it to your dictionaries for a simple configurationcopytemplates/command_letter_2/customised.pyand add it to your dictionaries for a customisable configurationIt 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*FLTDZbreaking it down:KWR* = ), using emily's modifier symbols for the left handF = 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 useagecategoryUnique EnderModifiersCommandHow To Memorisefinders-LTDZ-FPBcustomisable-FPcustomisable-FB(used in easymotion)-PBshift(t)Previous Backwards-FfForwards-PtPrevious-Bshift(f)Backwards""escaped commandsmiscallaneous-TZ-FPBqliSeN-FPshift(at)macros-FBcustomisable-PBzzeN-Fgthe good Spot-PrrePlace-BmmarBgcustomisableUsagecopy templates/command_letter/simple.py and add it to your
dictionaries for default configurationcopy templates/command_letter/customised.py for a more
customised experiencenote that (shift(at)) is required to output @ because raw
keyboard input isweirdSee note oncontrol(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 = STPRARLDbreaking it down:STPR = unique starterA = a-RL = w, (see "objects" in
command_object/defaults.py)-D = dyi( = STPROFPLZSTPR = unique starterO = i-FPL = (, using emily's symbols for the right hand-Z = yThe table below shows the default mappings"Customisable" commands can be filled in for personal useagenote: AO combinations can be combined with other modifiersUnique starterModifiersCommandHow To MemorisePlugin RequirementsSTPR-Tg ccommenTarytpope/vim-commentary-DdDelete-Sy sSurroundtpope/vim-surround-ZyxyZ-TDcustomisable-DZd sDelete Surroundtpope/vim-surround-SZvviSualiZe-TScustomisable*Tg bcommenTarynumToStr/Comment.nvim*Dcustomisable*Sshift(s)Surroundtpope/vim-surround*Zcustomisable*TDcustomisable*DZcustomisable*SZcustomisable*TScustomisablecustomisableAaaroundOiAOcustomisable""Limitationssome command + motion combinations must be stroked in two, for
example:ct=Usagecopy templates/command_object/simple.py and add it to your
dictionaries for default configurationcopy templates/command_object/customised.py for a more
customised experiencenote that (shift(s)) is required to output S because raw
keyboard input isweirdSee note oncontrol(j)Emily-modifier (deprecated)How does this module improve upon theoriginal?You can prepend an escape to the commandCommands like ctrl^ no longer require shift to be pressedrelated
issueUsagecopy templates/Emily_modifier/simple.py and add it to your
dictionaries for a simple configurationcopy templates/Emily_modifier/customised.py for a more
customised experiencesee note oncontrol(j)Control(J)Allows you to execute any (most) commands as if you are from normal
modeSample .vimrc config (thanksUser202729)!"do nothing in normal modenore<c-j><nop>"escape insert mode, then return to insert mode afterwardsinore<c-j><c-\><c-o>"escape command modecnoremap<c-j><esc>if!has('nvim')" escape terminal mode, then return to terminal modesettermwinkey=<c-j>else" escape terminal mode, does not return to terminal mode :<tnoremap<c-j><C-\><C-n>endifDevelopersThis section shows how you can have an editable version of this projectFirstly, fork this repository (in GitHub), then clone it:gitclonehttps://github.com/your_user_name/plover_vimcd into this repoThen install for use!Note that "plover" is the executable that you downloaded to make Plover work in the first placeSee 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)cdplover_vim
plover-splover_pluginsinstall-e.