win-vind

You can operate Windows with key bindings like Vim.

MIT License

Stars
1.9K
Committers
4

Bot releases are visible (Hide)

win-vind - v5.2.1

Published by github-actions[bot] over 1 year ago

Patch

Fix

  • fix a bug that caused the version command to fail in the source command.
win-vind - v5.2.0

Published by github-actions[bot] over 1 year ago

Minor

Add-

  • To simplify the features, we have introduced a hierarchical structure of function (tier), allowing the user to choose the level of functionality. At the beginning of the .vindrc file, use the version command to select tiny, small, normal, big, or huge.

Example:

" Only comments can be written in here.
version tiny
" Any command can be written from.
" For example
set shell = cmd
Tier Supported Features
tiny +mouse +syscmd
small +mouse +syscmd +window +process
normal +mouse +syscmd +window +process +vimemu
big +mouse +syscmd +window +process +vimemu +hotkey +gvmode
huge +mouse +syscmd +window +process +vimemu +hotkey +gvmode +experimental

Following Vim, there are five tiers. tiny has minimal commands for mouse moving and clicking, including EasyClick and GridMove. small allows more flexible handling of window controls and process launches, etc. normal has Vim emulation mappings and allows text editing in text areas, etc. big adds several hotkeys that redefine some of the shortcut keys in Windows to operate Windows with more Vim-like ways. It also provides GUI Visual Mode (+gvmode), which allows for holding down the mouse. huge allows win-vind to have experimental features for more complex operations.

win-vind - v5.1.0

Published by github-actions[bot] over 1 year ago

Minor

New

GridMove (#115, #145, #155 )

  • Added <gridmove> function to move a cursor using hints located with grid-cell style.
  • To change fonts or colors, added its options as gridmove_bgcolor, gridmove_fontcolor, gridmove_fontname, gridmove_fontsize, and gridmove_fontweight.
  • Added the gridmove_size option in order to set the grid size, which assumes a text as its value, such as 12x8 for horizontal 12 cells and vertical 8 cells.
  • Its default mapping is <Ctrl-m> in GUI normal mode.

hintkeys option (#172)

  • You can specify the characters of hint used for EasyClick and GridMove. The hintkeys option accpets as input a set of non-duplicate characters and assigns them to the hints in order from the first to the last.
  • Example
    set hintkeys=abcdefg
    

Other

  • Add <click_mid> function to click the middle buttion of a mouse.

Change

EasyClick Generalization (#162)

  • To define flexible macros, <easy_click_left>, <easy_click_right>, <easy_click_mid>, and <easy_click_hover> are eliminated and <easyclick> is added to only move the cursor. For compatibility, the previous function names are replaced internally with the following.

    Conventional Name Automatically Replaced Name
    <easy_click_left> <easyclick><click_left>
    <easy_click_right> <easyclick><click_right>
    <easy_click_mid> <easyclick><click_mid>
    <easy_click_hover> <easyclick>
  • Eliminate easyclick_colordecay option.

  • Change the style of the hint label.

Fix

  • Fix scrolling after leaving <switch_window> (#159)
win-vind - v5.1.0-beta1

Published by pit-ray over 1 year ago

Minor

New

  • Added <gridmove> function to move a cursor using hints located with grid-cell style (#115, #145, #155).
  • To change fonts or colors, added its options as gridmove_bgcolor, gridmove_fontcolor, gridmove_fontname, gridmove_fontsize, and gridmove_fontweight.
  • Added the gridmove_size option in order to set the grid size, which assumes a text as its value, such as 12x8 for horizontal 12 cells and vertical 8 cells.

In this build, the default bindings of <gridmove> in gui normal mode are set to <c-m>.
For example, we can change its parameters.

gnnoremap <ctrl-h> <gridmove><click_left>  " move and click
set gridmove_size=12x8   " 8x12 matrix
set gridmove_bgcolor=323232
set gridmove_fontcolor=c8c8c8
set gridmove_fontsize=14
set gridmove_fontweight=500
set gridmove_fontname=Arial

Plaese try it.

win-vind - v5.0.2

Published by github-actions[bot] over 1 year ago

Patch

  • Fix a problem that change-motion in editor normal mode moves to a strange location. (#157)
  • Fix a problem that noremap typed in command mode freezes.
win-vind - v5.0.1

Published by github-actions[bot] over 1 year ago

Patch

Fix

  • Fix a freeze problem after pressing the IME key.
win-vind - v5.0.0

Published by github-actions[bot] over 1 year ago

This version has undergone many changes. Please read the Migration Guide for key details.

Change

  • The mapping system has been redesigned to provide advanced and simple mapping. (#96, #104, #109)
  • We changed the syntax of .vindrc. It is not compatible. (#96)
  • Since the new mapping system allows function names to be written directly in the map, several redundant functions like <syscmd_*> were renamed.
  • Unnecessary options have been removed and options with duplicated functions that are difficult to understand have been integrated.
  • Icon and banners changed to a modern style.

Add

  • A Self-Mapping function has been added to propagate only certain keys to other applications. (#123)
  • Add word-motion, which behaves almost exactly like the original Vim. (#3, #57, #75)
  • Added an option to select the monitor to draw the command line on. (#45, #72, #95)
  • Added <ctrl-]> and <ctrl-[> in addition to mode transitions using <esc>. (#118 )
  • Added --command option to run commands from the terminal. (#101, #97)
  • Add new mode prefix like g or e for batch map registration. (#91)
  • Add listen_interval option to change interval time of synchronous timer for server-client running. (#112)

Fix

  • Fixed deletion of lines not included EOL. (#94)
  • Added support for proper positioning and scaling of EasyClick on high DPI displays.(#54, #85, #139)
  • Fixed wrong projection position in <jump_cursor_with_keybrd_layout> on multiple displays. (#99, #102)
  • Fixed serveral bugs received in issue.
win-vind - v5.0.0-beta5

Published by pit-ray over 1 year ago

Fix

  • Add runtime tests and fix discovered bugs.

Change

  • Changed the system tray icon to a modern style.
win-vind - v5.0.0-beta4

Published by pit-ray almost 2 years ago

Change

  • The format of version is changed as MAJOR.MINOR.PATCH.TAG.
win-vind - v5.0.0-beta3

Published by pit-ray almost 2 years ago

Add

  • Add listen_interval option to change interval time of synchronous timer. (#112)
  • Add --command option to execute arbitrary commands from terminal. (#101, #97)
  • Introducing automatic runtime test in Python.

Fix

  • Fix problem with mouse not working by --func/--command.

Change

  • Remove default_config directory.
  • Change support year
  • Support old option name for compatibility.
win-vind - v5.0.0-beta2

Published by pit-ray almost 2 years ago

Fix

  • Fix the problem the inputs jam with only system keys like <esc-left>.
win-vind - v5.0.0-beta1

Published by pit-ray almost 2 years ago

The difference between conventional win-vind

Attention: This version also includes the contents of v4.4.0-rc1. Please refer those changes as well.

1. Syntax of .vindrc (Discussed in #96)

The difference between map and noremap

The conventional map and noremap have different purposes. The map is designed to propagate defined macros to other applications except for win-vind, whereas the noremap effects in win-vind score only.

However, the NEW map and the NEW noremap have similar features of Vim and are separated on whether allow remapping like Vim.

Specifically, the map allows remapping with user-defined mapping like the following.

nmap f h  " f --> h
nmap t f  " t --> h

The noremap performs only the default map.

nnoremap f h  " f --> h
nnoremap t f  " t --> f

Arguments of map/noremap

The command kind is the same, but the way to interpret the arguments.

Command Syntax
noremap noremap [trigger-cmd] [target-cmd]
map map [trigger-cmd] [target-cmd]
unmap unmap [trigger-cmd]
mapclear mapclear
command command [trigger-cmd] [targer-cmd]
delcommand delcommand [trigger-cmd] [target-cmd]
comclear comclear

Note: The syntax is not included [ and ].

The [trigger-cmd] is assumed to key typing only and the [target-cmd] has three types of intepretation.

Type of [target-cmd] Example Notes
Function Name map FF <easy_click_left> Calls the pre-defined functions.
Internal Macro map XX a<ctrl-f>bcd Generate macros inside the internal scope of win-vind. This feature uses to define some shortcuts to a function or some combined mapping consisting of multiple pre-defined functions.
External Macro map g {This text is inserted} Define macros that are propagated outside of win-vind by enclosing them in { and }. This emulates the action of the user pressing the keyboard itself, and a single key to single key mapping (e.g. map a {b}) is the most efficient low-level mapping done.

These [target-cmd] can be incorporated into a single map as follows.

map g <easy_click_left>b{This text is inserted}<switch_window>hh<cr>

The mapping represents a macro that is triggered by g, activates easy_click, jumps to the position of the hint in b, enters the string "This text is inserted", and then selects the two-left window with switch_window.

This version will preform an optimization process that merges several maps into one map, unless it contains a command to change the mode. For example, the following mappings will be merged into one.

  • Raw map
nmap b h
nmap o b
nmap p o
  • Optimized map (THIS VERSION)
nmap p h

Below are some examples of use.

  1. Define mode change mapping
    imap <win-[> <to_edi_normal>
    imap <win-]> <to_gui_normal>
    
  2. Text input macros
    nmap mail {[email protected]}
    
  3. Web page launcher
    nmap <ctrl-1> :execute https://example.com<cr>
    
  4. Application launcher
    nmap <ctrl-2> :! notepad<cr>
    
  5. Copy the current line to the bottom line as in Vim.
    enmap t yyGp
    

Mode Prefix (Mentioned in #91)

We received many requests to register maps across several modes, so we added batch-mapping with the same grouping as in Vim.

You can mode prefix to specify modes.

Prefix Mode
  GUI Normal, GUI Visual, Edi Normal, Edi Visual
g GUI Normal, GUI Visual
e Edi Normal, Edi Visual
n GUI Normal, Edi Normal
v GUI Visual, Edi Visual
gn GUI Normal
gv GUI Visual
en Edi Normal
ev Edi Visual
i Insert Mode
r Resident Mode
c Command Mode

However, external macros in cmap and cnoremap are not input to other applications and behave the same as internal macros.

Self-Mapping (#123)

You can disable the absorption of some keys and allow them to be input, as in map <alt> {<alt>}. However, this is only valid for a single key.
If the target command consists of multiple characters like map g abcgd and contains a trigger command, the following warning statement will be printed to log and no mapping will be done.

[Warning] Some part of the command generated from mapping `g * :e https://google.com<return>` was ignored to avoid an infinite loop because it was mapped to itself by mapping `g * :e https://google.com<return>`. If you wish to enter the generated command as is, enclose it in `{}`.

Changed default mapping (Discussed in #118)

Since the mode transition combined with ESC in win-vind was not well received, we adopted the same command as in Vim.

Type of map Function ID Conventional trigger of map New trigger of map
imap to_gui_normal <Esc-Left> <Ctrl-]>
imap to_edi_normal <Esc-Right> <Ctrl-[>

Renamed function name

The conventional <syscmd_*> function names are renamed to simple ones. Please refer next link.
https://github.com/pit-ray/win-vind/blob/master/src/bind/mapdefault.cpp#L466-L522

Eliminated options and replacements

The following is the correspondence between the options that were removed and their replacements. The - is completely obsolete.

Eliminated options Replacements
window_accel window_velocity
window_tweight window_velocity
window_maxv window_velocity
cursor_tweight cursor_resolution
cursor_maxv -
cmd_maxchar -
cmd_maxhist -

Details of the new options are as follows.

New options Notes
window_velocity Pixel-level velocity in the constatnt acceleration motion of the window in winresizer.
cursor_resolution A weight for scaling the time of constant acceleration motion of the mouse cursor.

Implementation

The default map has been defined by default_config/.vindrc but is now embedded in the code to increase startup speed.

win-vind - v4.4.0-rc1

Published by pit-ray over 2 years ago

Minor

New

  • Add the following word-motion which behave almost exactly like Vim. (#57, #75)

    ID Feature Emulation
    move_fwd_word words forward for normal mode. w
    move_fwd_word_simple words forward for visual mode. w
    move_bck_word words backward for normal mode. b
    move_bck_word_simple words backward for visual mode. b
    move_fwd_bigword WORDS forward. W
    move_bck_bigword WORDS backward. B
    move_end_word Forward to the end of words. e
    move_end_bigword Forward to the end of WORDS. E
    move_bckend_word Backward to the end of words. ge
    move_bckend_bigword Backward to the end of WORDS. gE

    These functions do not work in visual mode except for w and b, because they copy the text once and retrieve the text via the clipboard. iskeyword option is fixed to the default value of Vim in Windows and cannot change it currently.
    There is an option charbreak to set the criteria for considering a Unicode character as a single character.

    ID Type Default Note
    charbreak str grapheme Mode for how to split a single Unicode character. The grapheme mode treats a combination character as a single character. The codepoint mode processes the combination character for each codepoint.
win-vind - v4.3.3

Published by github-actions[bot] over 2 years ago

Patch

  • Fixed an issue that prevented from starting before Windows 10 2004. (#62, #71)
win-vind - v4.3.2

Published by github-actions[bot] almost 3 years ago

Patch

Fix

  • Support for French keyboard layout. (#53)
  • Fixed strange behavior with switch_char_case in multiple languages text.
  • Improved the behavior of entering repeated numbers in commands.
win-vind - v4.3.1

Published by github-actions[bot] almost 3 years ago

Patch

Fix

  • Fixed a problem not printing capital letters with map.
  • Fixed an issue not working noremap triggered by a command.
win-vind - v4.3.0

Published by github-actions[bot] almost 3 years ago

Minor

Fix

  • Fixed a few bugs in the parser.
  • Fixed error logger to be able to exist until the end of the process.

Change

  • Changed the default configuration file from json to .vindrc.
  • Now open .vindrc with :e with no arguments.
  • Show the running environment to a log file.

New

  • Supported cmd2cmd mapping for macros in map and noremap. For example, you can use it as follows.
gnnoremap <ctrl-1> :!notepad<cr>
gnnoremap <ctrl-2> :e https://www.google.com<cr>
gnmap <ralt> <ctrl-s>
imap <ctrl-right> This text will be inserted.
  • Added the ability to load .vindrc in another directory, or to clone and load a GitHub repository if you specify one.
"Load .vindrc in another directory
source ~/.vindrc
source C:/Users/pit-ray/Desktops/.vindrc

" Load .vindrc from GitHub
source pit-ray/remote_vindrc_demo
  • Support recursive directory creation with :mkdir command (e.g. :mkdir foo/bar)

  • Support double-clicking with EasyClick (e.g. 2FF).

Feedback is welcome. https://github.com/pit-ray/win-vind/discussions/52

win-vind - v4.2.1

Published by github-actions[bot] about 3 years ago

Patch

Fix

  • Fixed an error that occurred when passing an empty string in the set command or set in .vindrc.

Change

  • Change the documentation theme
  • Changed the package name of the zip version to portable and the installer version to specify installer.

New

  • Support Chocolatey (choco install win-vind)
  • Support winget (winget install win-vind)
  • Add the potential to create multilingual documents.
win-vind - v4.2.0

Published by github-actions[bot] about 3 years ago

Minor

Fix

  • Fixed some bugs.

Change

  • If there is a syntax error in .vindrc at startup, use the default value and show the main error on the command line.

New

  • Support for dot command (#29). However, editing in insert mode will not be repeated. (ID: repeat_last_change)
  • Support for block-style carets (#12, #31). There are a solid mode with fixed size and a flex mode with pseudo blocks by selection.
    set blockstylecaret                 " Enable
    set blockstylecaret_mode = solid    " Static size mode [Default]
    set blockstylecaret_mode = flex     " Variable size mode
    set blockstylecaret_width = 15      " Width on solid mode
    

Note

I have been able to confirm that this version works with the following Windows 11.

Edition Windows 11 Home Insider Preview
Version Dev
OS Build 22449.1000
Experience Windows Feature Experience Pack 1000.22449.1000.0
win-vind - v4.2.0-rc2

Published by github-actions[bot] about 3 years ago

Package Rankings
Top 6.64% on Proxy.golang.org