Releases: pit-ray/win-vind
v5.0.0-beta2
Fix
- Fix the problem the inputs jam with only system keys like
<esc-left>
.
v5.0.0-beta1
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.
- Define mode change mapping
imap <win-[> <to_edi_normal> imap <win-]> <to_gui_normal>
- Text input macros
nmap mail {[email protected]}
- Web page launcher
nmap <ctrl-1> :execute https://example.com<cr>
- Application launcher
nmap <ctrl-2> :! notepad<cr>
- 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.
v4.4.0-rc1
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
andb
, 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 optioncharbreak
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. Thecodepoint
mode processes the combination character for each codepoint.
v4.3.3
v4.3.2
v4.3.1
Patch
Fix
- Fixed a problem not printing capital letters with
map
. - Fixed an issue not working
noremap
triggered by a command.
v4.3.0
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
andnoremap
. 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
v4.2.1
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 specifyinstaller
.
New
- Support Chocolatey (
choco install win-vind
) - Support winget (
winget install win-vind
) - Add the potential to create multilingual documents.
v4.2.0
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 |
v4.2.0-rc2
Merge branch 'master' of github.com:pit-ray/win-vind