win-vind

win-vind

官方版 无广告 7,088

更新日期:2222-04-15 分类标签: 语言:中文 平台:没限制

71 人已下载 手机查看

如果你正使用vim easymotion快速定位插件 ,或者 Vimium Chrome插件。那么对于这款windows下的软件就会很好理解 ,它可以像Vim easymotion 一样通过绑定按键来操作Windows。

知识库

https://pit-ray.github.io/win-vind/cheat_sheet/

Usage

You can refer to the installation and quick tutorial in Usage - win-vind.

.vindrc samples

You can configure it in .vimrc style. What you can do in .vindrc is switch options, set parameters, remap low-level keys, and define function bindings.

" ------------ Example ------------
"EasyClick 字体设置. 改为类似Vimium的黑黄配色 
set easyclick_fontsize=37
set easyclick_fontweight=800
set easyclick_fontname = MSYH    "微软雅黑字体
set easyclick_fontcolor=#000000
set easyclick_bgcolor=#fae26b
" Virtual command line options
set shell = cmd
set cmd_fontsize = 14
set cmd_roughpos = LowerLeft
set cmd_maxchar = 100

" Enable block style caret
set blockstylecaret
set blockstylecaret_mode = solid

" Low-level key mapping in resident mode
rmap <capslock> <ctrl>

" Define bindings in GUI Normal mode
gnnoremap <c-h> select_left_window
gnnoremap <c-l> select_right_window
gnnoremap <c-k> select_upper_window
gnnoremap <c-j> select_lower_window

" Define bindings in insert mode
imap <capslock> <f16>
inoremap <f16> to_edi_normal

imap <ralt> <f17>
inoremap <f17> easy_click_left

imap <app> <f18>
inoremap <f18> window_resizer

The Functions page lists all supported functions, the Options document lists parameters and useful extensions, and the Keyword List contains keyword notations for writing .vindrc. If you want to know the default bindings, refer to Default Mappings.

Description

win-vind provides a lightweight hybrid UI system of CUI and GUI for Windows. And everything is inspired by Vim and its plugins. Simply put, it is a Vim-oriented toy box consisting of various useful features.

Note

  • :exit is the recommended termination.
  • <F8> + <F9> is safe forced termination.
  • win-vind could not operate some windows given high-rank authorization than itself. For example, if you start Task Manager having the highest authorization and select its window, you cannot move, click or scroll the mouse cursor by win-vind. If you want to operate all windows, I recommend giving win-vind the administrator authorization. (Please use Task Scheduler).

快速教程

1. Mode Transition

The basic concept is the same as Vim, but there are two Normal Mode and two Visual Mode, and Resident Mode.

win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

Default mode layer overview

两组模式: GUI模式和编辑模式。GUI模式允许我们控制窗口和鼠标光标等。后者编辑模式允许我们在网页、Microsoft Office Word等的输入形式中模拟Vim。

There are two groups: GUI mode and Editor mode. The former allows us to control windows and mouse cursor, etc. The latter allows us to emulate Vim in input forms of web pages, Microsoft Office Word, etc.

win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

Concepts of GUI Mode and Editor Mode

 

驻留模式是一种疏散模式,以防止绑定与快捷键在蒸汽或使用Vim时使用快捷键碰撞。例如,如果您已将<Esc>添加到插入模式的keymap以进行忠实的Vim仿真,则可以使用驻留模式来防止Vim的<Esc>调用Win-Vind。

Resident Mode is an evacuation mode to prevent bindings from being collisions with shortcut keys while gaming on Steam or using Vim. For example, if you have added <Esc> into the keymap of Insert Mode for faithful Vim emulation, you can use Resident Mode to prevent win-vind from being called by Vim’s <Esc>.

Insert Mode and Resident Mode pass all key messages to Windows, while GUI Normal ModeGUI Visual ModeEdi Normal ModeEdi Visual Mode, and Command Mode block them.

win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

Visual Concepts of Mode

 

After the boot, win-vind will be in Insert Mode. Let’s make transitions of mode!

2. GUI Operation and Window Operation

  1. Switch to GUI Normal Mode with <Esc-Left>.
  2. Please inputs :!mspaint to launch Microsoft Paint.
  3. You can call EasyClick with FF.

    win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

    EasyClick Demo

     

  4. Let’s select windows with <C-w>h or <C-w>l.
  5. Please select Microsoft Paint and close it with :close.

3. Customize win-vind

win-vind uses Run Commands style configuration method. If you’ve ever written a .vimrc, it’s easy to make it your win-vind.

Generally, there are three levels of key mapping: key2keykeyset2keyset, and cmd2cmd. key2key assigns one key to another. keyset2keyset assigns one key combination to another, such as <c-s> to <m-h>. cmd2cmd is a mapping scheme that generates another command in response to a sequential command input, such as qq to <c-w>e.

The keyset syntax uses the same expression as in Vim, where keys are connected by - between < and >. However, there is no limit to the number of combinations, and you can connect as many as you like. (e.g. <Esc-b-c-a-d>).

The following commands are supported. By the way, { and } themselves are not part of the syntax.

Syntax Effects
set {option} Set the value of the option to true.
set no{option} Set the value of the option to false.
set {option} = {val} Set a value of the option. The value can be a string or a number that allows floating points. The string does not need quotation marks, and any character after the non-white character will be handled as the value. White spaces at both ends of the equals sign are ignored.
{mode}map {in-key} {out-key} It performs cmd2cmd mapping with low-level. The defined low-level map is actually propagated to Windows as keystroke. By the way, only the key2keyset format can synchronize the key state without delay.
{mode}noremap {in-cmd} {func-id} It defines the map to call the function.
{mode}noremap {in-keyset} {out-keyset} It performs cmd2cmd mapping in win-vind scope. However, since the {func-id} definition has higher priority than its syntax, it may result in exactly one level of recursive mapping.
{mode}unmap {in-cmd} Remove the map corresponding to the {in-cmd}.
{mode}mapclear Delete all maps.
command {in-cmd} {func-id} It defines the command to call the function.
delcommand {in-cmd} Remove the command corresponding to the {in-cmd}.
comclear delete all commands.
source Load another .vindrc. Either fill in the path to the .vindrc or use the syntax user/repo to load the .vindrc in the root directory of the GitHub repository.

{mode} is the Mode Prefix. And only UTF-8 format is supported for .vindrc.

Let’s do the last tutorial!

  1. Go to Insert Mode.
  2. This time, we will try Instant GUI Normal Mode with <F8>. It allows us to temporarily switch to the GUI Normal Mode.

    win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

    Instant GUI Normal Demo

     

  3. Open your .vindrc with :e.

    win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

    Edit .vindrc Demo

     

  4. Write following commands into .vindrc.
    set cmd_fontname = Times New Roman
    imap <Capslock> <ctrl>
    inoremap <Alt> easy_click_left
    imap <ctrl-a> Vim is the best editor.
    gnnoremap <ctrl-1> :!notepad<cr>
    
  5. If you done, try reloading .vindrc with :source of win-vind. (No arguments are needed.)

    win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

    Reload Demo

     

  6. In Insert Mode, you can use <Capslock> instead of <Ctrl> and call EasyClick with a single <Alt>. And, you can insert a fixed form text with pressing Ctrl and A at the same time. In GUI Normal Mode, pressing Ctrl and 1 at the same time will open Notepad.

 

特点

System Design

  • Fast binding system
  • Vim-like mode management
  • .vimrc style configuration
  • Running in user permission
  • Oneshot use for Vim or AHK (e.g. $ win-vind -f easy_click_left)

Top Features

  • GUI operation without mouse
  • Vim emulation everywhere
  • Process launcher like :!vim ~/.vimrc on resident command line
  • Low-level key mapping (e.g. Capslock -> Ctrl)
  • Keystroke macros
  • Tiling window manager
  • Hinting feature like Vimium or EasyMotion for GUI.

Top Feature Demo

win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

Macro Feature Demo

 macro-demo.mp4 

 

Download

Chocolatey Version

win-vind supports installation using Chocolatey. To install win-vind with Chocolatey, run the following command from the command line or from PowerShell.

$ choco install win-vind

winget Version

winget is also supported. To install the package, run the following command from your command line.

$ winget install win-vind

Installer Version

Portable Version

Note

  • If you want to use word motion (e.g. wBe) in MS Office Word, it is recommended to disable Use smart paragraph selection.

    win-vind 像Vim Easymotion 一样通过绑定按键来操作Windows

Insert Mode

Bindings ID
<Esc-Down> to_resident
<Esc-Left> to_gui_normal
<Esc-Right> to_edi_normal
<F8> to_instant_gui_normal

Resident Mode

Bindings ID
<Esc-Left> to_gui_normal
<Esc-Right> to_edi_normal
<Esc-Up> to_insert

GUI Normal Mode

Mode

Bindings ID
: to_command
<Esc-Down> to_resident
I<Esc-Right> to_edi_normal
i to_insert
v to_gui_visual

Mouse

Bindings ID
$<End> jump_cursor_to_right
0^<Home> jump_cursor_to_left
<C-b> scroll_up_onepage
<C-d> scroll_down_halfpage
<C-e><C-j> scroll_down
<C-f> scroll_down_onepage
<C-u> scroll_up_halfpage
<C-y><C-k> scroll_up
FFFo easy_click_left
Fa easy_click_right
Fh easy_click_hover
Fm easy_click_mid
G jump_cursor_to_bottom
M jump_cursor_to_vcenter
aA click_right
f jump_cursor_with_keybrd_layout
gg jump_cursor_to_top
gm jump_cursor_to_hcenter
h<BS><Left> move_cursor_left
j+<Down> move_cursor_down
k-<Up> move_cursor_up
l<Space><Right> move_cursor_right
oO click_left
t jump_cursor_to_active_window
zH scroll_left_halfpage
zL scroll_right_halfpage
zh<C-h> scroll_left
zl<C-l> scroll_right

Hotkey

Bindings ID
/? search_pattern
<C-r> redo
<gt> goto_next_page
<lt> goto_prev_page
<win> open_startmenu
V select_all
X hotkey_backspace
ddD hotkey_cut
pP hotkey_paste
uU undo
x<Del> hotkey_delete
yyyY hotkey_copy

Virtual Desktop

Bindings ID
<C-v>h switch_to_left_vdesktop
<C-v>l switch_to_right_vdesktop
<C-v>n create_new_vdesktop
<C-v>q close_current_vdesktop
<C-v>s taskview

Tab

Bindings ID
gT switch_to_left_tab
gt switch_to_right_tab

Window

Bindings ID
<C-w>+ increase_window_height
<C-w>- decrease_window_height
<C-w><gt> increase_window_width
<C-w><lt> decrease_window_width
<C-w>= arrange_windows
<C-w>H<C-w><Left> snap_current_window_to_left
<C-w>J snap_current_window_to_bottom
<C-w>K snap_current_window_to_top
<C-w>L<C-w><Right> snap_current_window_to_right
<C-w>R rotate_windows_in_reverse
<C-w>d minimize_current_window
<C-w>e window_resizer
<C-w>h select_left_window
<C-w>j select_lower_window
<C-w>k select_upper_window
<C-w>l select_right_window
<C-w>n open_new_window
<C-w>q<C-w>c close_current_window
<C-w>r rotate_windows
<C-w>s switch_window
<C-w>u maximize_current_window
<C-w>x exchange_window_with_nearest

GUI Visual Mode

Mode

Bindings ID
<Esc-Down> to_resident
<Esc-Left> to_gui_normal

Mouse

Bindings ID
$<End> jump_cursor_to_right
0^<Home> jump_cursor_to_left
<C-b> scroll_up_onepage
<C-d> scroll_down_halfpage
<C-e><C-j> scroll_down
<C-f> scroll_down_onepage
<C-u> scroll_up_halfpage
<C-y><C-k> scroll_up
G jump_cursor_to_bottom
M jump_cursor_to_vcenter
gg jump_cursor_to_top
gm jump_cursor_to_hcenter
h<BS><Left> move_cursor_left
j+<Down> move_cursor_down
k-<Up> move_cursor_up
l<Space><Right> move_cursor_right
zH scroll_left_halfpage
zL scroll_right_halfpage
zh<C-h> scroll_left
zl<C-l> scroll_right

Hotkey

Bindings ID
X hotkey_backspace
ddD hotkey_cut
pP hotkey_paste
x<Del> hotkey_delete
yyyY hotkey_copy

Editor Normal Mode

Mode

Bindings ID
: to_command
<Esc-Down> to_resident
<Esc-Left> to_gui_normal
V to_edi_visual_line
i to_insert
v to_edi_visual

Mouse

Bindings ID
<C-b> scroll_up_onepage
<C-d> scroll_down_halfpage
<C-e><C-j> scroll_down
<C-f> scroll_down_onepage
<C-u> scroll_up_halfpage
<C-y><C-k> scroll_up
zH scroll_left_halfpage
zL scroll_right_halfpage
zh<C-h> scroll_left
zl<C-l> scroll_right

Hotkey

Bindings ID
/? search_pattern
<C-r> redo
uU undo

Tab

Bindings ID
gT switch_to_left_tab
gt switch_to_right_tab

Vim Emulation

Mode

Bindings ID
A to_insert_EOL
IgI to_insert_BOL
O to_insert_nlabove
a to_insert_append
o to_insert_nlbelow

Move

Bindings ID
h<C-h><BS><Left> move_caret_left
j+gj<C-n><Down><Enter><C-m> move_caret_down
k-gk<C-p><Up> move_caret_up
l<Space><Right> move_caret_right
w move_caret_word_forward (Deprecated in 4.4)
W move_caret_nonblank_word_forward (Deprecated in 4.4)
b move_caret_word_backward (Deprecated in 4.4)
B move_caret_nonblank_word_backward (Deprecated in 4.4)
w move_fwd_word (in 4.4)
b move_bck_word (in 4.4)
W move_fwd_bigword (in 4.4)
B move_bck_bigword (in 4.4)
e move_end_word (in 4.4)
E move_end_bigword (in 4.4)
ge move_bckend_word (in 4.4)
gE move_bckend_bigword (in 4.4)

Jump

Bindings ID
$<End>g$ jump_caret_to_EOL
0<Home>g0 jump_caret_to_BOL
G jump_caret_to_EOF
gg jump_caret_to_BOF

Edit

Bindings ID
C change_until_EOL
D delete_line_until_EOL
J join_next_line
P put_before
R replace_sequence
X delete_before
c change_with_motion
ccS change_line
d delete_with_motion
dd delete_line
p put_after
r replace_char
s change_char
x<Del> delete_after
y yank_with_motion
yyY yank_line
~ switch_char_case

Editor Visual Mode

Mode

Bindings ID
: to_command
<Esc-Down> to_resident
<Esc-Left> to_gui_normal
<Esc-Right> to_edi_normal

Mouse

Bindings ID
<C-b> scroll_up_onepage
<C-d> scroll_down_halfpage
<C-e><C-j> scroll_down
<C-f> scroll_down_onepage
<C-u> scroll_up_halfpage
<C-y><C-k> scroll_up
zH scroll_left_halfpage
zL scroll_right_halfpage
zh<C-h> scroll_left
zl<C-l> scroll_right

Vim Emulation

Move

Bindings ID
h<C-h><BS><Left> move_caret_left
j+gj<C-n><Down><Enter><C-m> move_caret_down
k-gk<C-p><Up> move_caret_up
l<Space><Right> move_caret_right
w move_caret_word_forward (Deprecated in 4.4)
W move_caret_nonblank_word_forward (Deprecated in 4.4)
b move_caret_word_backward (Deprecated in 4.4)
B move_caret_nonblank_word_backward (Deprecated in 4.4)
w move_fwd_word_simple (in 4.4)
b move_bck_word_simple (in 4.4)

Jump

Bindings ID
$<End>g$ jump_caret_to_EOL
0<Home>g0 jump_caret_to_BOL
G jump_caret_to_EOF
gg jump_caret_to_BOF

Edit

Bindings ID
csS change_highlight_text
dxX delete_highlight_text
y yank_highlight_text

Command Mode

Mode

Command ID
::guinormal:gn to_gui_normal
:edinormal:en to_edi_normal
:edivisual:ev to_edi_visual
:edivisualline:evl to_edi_visual_line
:guivisual:gv to_gui_visual
:insert:i to_insert
:resident to_resident

Virtual Desktop

Command ID
:closev close_current_vdesktop
:taskview taskview
:vdnext switch_to_right_vdesktop
:vdprev switch_to_left_vdesktop

Tab

Command ID
:q:q!:tabclose close_current_tab
:tabnew open_new_tab
:tabnext switch_to_right_tab
:tabprevious switch_to_left_tab

Window

Command ID
:arrange arrange_windows
:bsplit:bsp snap_current_window_to_bottom
:cl:close close_current_window
:exchange exchange_window_with_nearest
:lsplit:lsp snap_current_window_to_left
:max:on:only maximize_current_window
:min:hi:hide minimize_current_window
:new open_new_window
:reload reload_current_window
:rerotate:rerot rotate_windows_in_reverse
:resize +<num>:res +<num> increase_window_height
:resize -<num>:res -<num> decrease_window_height
:resize <num>:res <num> resize_window_height
:resizer:winresizer window_resizer
:rotate:rot rotate_windows
:rsplit:rsp snap_current_window_to_right
:sp:split open_new_window_with_hsplit
:sw:switch switch_window
:tsplit:tsp snap_current_window_to_top
:vertical resize +<num>:vert res +<num> increase_window_width
:vertical resize -<num>:vert res -<num> decrease_window_width
:vertical resize <num>:vert res <num> resize_window_width
:vs:vsplit open_new_window_with_vsplit

File

Command ID
:mkdir<any>:md<any> makedir

Process

Command ID
:!<any> start_external
:e <any>:edit <any>:execute <any> execute
:exit exit_config_gui
:sh:shell:terminal:term start_shell

Hotkey

Command ID
:backward backward_ui_navigation
:decide decide_focused_ui_object
:ex:explorer start_explorer
:find:open open
:forward forward_ui_navigation
:w save
:win:start open_startmenu

Option

Command ID
:target enable_targeting_of_dedicate_to_window
:untarget disable_targeting_of_dedicate_to_window

System Command

Command ID
:comclear system_command_comclear
:command<any> system_command_command
:delcommand<any> system_command_delcommand
:set<any> system_command_set
:source<any> system_command_source
:{mode-prefix}map<any> system_command_map
:{mode-prefix}mapclear system_command_mapclear
:{mode-prefix}noremap<any> system_command_noremap
:{mode-prefix}unmap<any> system_command_unmap

Vim Emulation

Command ID
:+<num> move_caret_down
:-<num> move_caret_up
:<num> jump_caret_to_BOF

Default Mappings End

Related Pages

Similar Projects

License

This software is provided by MIT License.

Author

  • pit-ray

相关软件

Visual Studio Code
代码编辑器
QuickLook for Windows
引入macOS “quick look”功能的Windows 软件