pit-ray / Win Vind
Projects that are alternatives of or similar to Win Vind
win-vind
Simple Vim Key Binder for Windows
Code status | Build status | ||
---|---|---|---|
Coverity | Codacy | MinGW-w64 | Visual Studio 2019 |
Description
win-vind provides the lightweight hybrid UI system of CUI and GUI. Its core idea is to add a new mode layer to operate GUI when you want to transition from Vim to other windows for a short while.
There are five main features.
1. GUI Operation like Vim
You can operate windows, a mouse cursor , virtual desktops, GUI-objects with key-bindings like Vim.
EasyClick Demo (default: FF
, Fa
, Fm
, Fh
)
It works well in Win32 or UWP applications.
2. Vim emulation everywhere
It enables to emulate Vim when using general text editors, for instance, notepad.exe
or Microsoft Office Word
.
3. Mode Management like Vim
There are two main modes: GUI Mode for GUI operation and Editor Mode for Vim emulation.
4. Process Control
If you register notepad.exe
as notepad
, could launch it by typing :!notepad
like below.
5. Using from command line
You can operate win-vind from command lines.
Example
$ ./win-vind.exe --func change_to_normal
Therefore, it enables to make Vim link to GUI or use from AutoHotKey.
If you add next scripts into .vimrc, you can switch a mode to operate GUI with :GUINormal
.
Plug 'skywind3000/asyncrun.vim'
command! GUINormal :AsyncRun win-vind -f change_to_normal
If you add next scripts into AHK Script, you can call each function.
#f::Run, win-vind -f easy_click_left
#a::Run, win-vind -f arrange_windows
Refer to Link With Vim - win-vind. If you want to know the details, refer to Cheat Sheet - win-vind.
Download
3.2.2 (Latest Version)
Date: 2021/2/28
32bit
64bit
Usage
You can call a pre-defined function with favorite keybindings. The above-stated mode management has the following features, and all modes can have functions to switch to each mode with your keybindings. All modes have presets of keybindings.
Mode | Features |
---|---|
GUI Normal, Edi Normal | All keys except hotkeys will be disabled. Therefore, recommended to include functions to transit to Insert Mode. |
GUI Insert, Edi Insert | Inputted keys will not be disabled and are transmitted normally to other applications. When the commands are detected, a function will be called. |
GUI Visual | It holds right-click. |
Edi Visual, Edi Visual Line | Each function works on the assumption you hold down a shift key. |
Command | This is shared Editor mode and GUI mode. A virtual command line is launched, and Enter is available to decide and BackSpace is available to erase. You can move the history with Up and Down. |
Please visit How to use - win-vind for details.
Demo
You can change default bindings.
Default Key Config
Window Control
|Binding|Command|Meanings|
|:---:|:---:|:---|
|<C-w>s
|:switch
|Switch windows|
|<C-w>q
|:close
|Close a current window|
|<C-w>n
|:new
|Open a new window|
|-|:split
|Open a new window with hsplit|
|-|:vsplit
|Open a new window with vsplit|
|<C-w>h
|-|Select a left window|
|<C-w>l
|-|Select a right window|
|<C-w>k
|-|Select an upper window|
|<C-w>j
|-|Select a lower window|
|<C-w>H
|:lsplit
|Snap a current window to left|
|<C-w>L
|:rsplit
|Snap a current window to right|
|<C-w>K
|:tsplit
|Snap a current window to top|
|<C-w>J
|:bsplit
|Snap a current window to bottom|
|<C-w>=
|:arrange
|Arrange windows|
|<C-w>r
|:rotate
|Rotate windows|
|<C-w>R
|:rerotate
|Rotate windows in reverse|
|<C-w>x
|:exchange
|Exchange a window with nearest one|
|-|:resize <num>
|Resize the height of a window|
|<C-w>+
|:resize +<num>
|Increase the height of a window|
|<C-w>-
|:resize -<num>
|Decrease the height of a window|
|-|:vertical resize <num>
|Resize the width of a window|
|<C-w><gt>
|:vertical resize +<num>
|Increase the width of a window|
|<C-w><lt>
|:vertical resize -<num>
|Decrease the width of a window|
Mouse Control
|Binding|Command|Meanings|
|:---:|:---:|:---|
|o
|-|Left Click|
|a
|-|Right Click|
|FF
, Fo
|:ecl
|EasyClick (Left Click) (hinting feature)|
|Fa
|:ecr
|EasyClick (Right Click)|
|Fm
|:ecm
|EasyClick (Mid Click)|
|Fh
|:ech
|EasyClick (Hovering)|
|h
|-|Move Cursor Left|
|j
|-|Move Cursor Down|
|k
|-|Move Cursor Up|
|l
|-|Move Cursor Right|
|0
|-|Jump Cursor to Left|
|f
|-|Jump Cursor by Keyboard Mapping|
|<C-y>
|-|Scroll Up|
|<C-e>
|-|Scroll Down|j
Virtual Desktop Control
|Binding|Command|Meanings|
|:---:|:---:|:---|
|<C-v>h
|-|Switch Virtual Desktop to Left|
|<C-v>l
|-|Switch Virtual Desktop to Right|
Mode Control
|Binding|Command|Meanings|
|:---:|:---:|:---|
|<Esc-Left>
|-|Change to GUI Normal|
|i
|-|Change to GUI Insert|
|v
|-|Change to GUI Visual|
|I
|-|Change to Editor Normal|
|i
|-|Change to Editor Insert|
|v
|-|Change to Editor Visual|
|V
|-|Change to Editor Line Visual|
Process Launcher
|Binding|Command|Meanings|
|:---:|:---:|:---|
|-|:sh
, :term
|Start Command Prompt|
|-|:!<any>
|Start Any Application|
Utilities
|Binding|Command|Meanings|
|:---:|:---:|:---|
|-|:w
|Save Opened File|
|-|:mkdir <any>
|Make Directories|
|<gt>
|-|Move to Next Page|
|<lt>
|-|Move to Previous Page|
|u
|-|Undo|
|<C-r>
|-|Redo|
|y
|-|Copy|
|p
|-|Paste|
|dd
|-|Cut|
|x
|-|Delete|
Others
|Binding|Command|Meanings|
|:---:|:---:|:---|
|-|:set
|Show Config Window of win-vind|
|-|:exit
|Exit win-vind|
However, there are more functions, so if you want more details, please see the CheatSheet.
How to contribute
Please read its architecture at architecture.md.
Quick Start for Build
If you have already installed MinGW-w64 or Visual Studio 2019, all you need is the next steps.
1. Install needed libraries into a root directory of win-vind.
$ ./setup_libs.bat [-mingw/-msvc] [32/64]
2. Build its project.
$ ./build.bat [-debug/-release] [-mingw/-msvc] [32/64]
3. Finish!
If you want to contribute, please visit How to contribute - win-vind.
ToDo
It is the difference between master and latest release.
State | Description | Type | Priority |
---|---|---|---|
✅ | Support multi-thread drawing in EasyClick | Improve | High |
✅ | Rotate windows without arrangement | Feature | High |
☐ | Improve customizability (preset feature like a gaming device utility? or customize like .vimrc ?) |
Architecture | High |
☐ | Add test codes | Improve | High |
☐ | Refactor directory structure. | Improve | High |
☐ | Add global namespace | Improve | High |
✅ | Change KeyLogger from STL to packaged classes. | Architecture | High |
✅ | Prohibit repeating key-stroke in EasyClick | Bug | Mid |
☐ | Bug reporting feature | Feature | Mid |
☐ | Implement E or e in Editor Mode with UI Automation. |
Feature | Mid |
☐ | Add a reference option in a command line. | Feature | Mid |
☐ | Update Notification | Feature | Mid |
✅ | Support multi-monitor in Exchange windows
|
Improve | Mid |
✅ | Support multi-monitor in Snap window
|
Improve | Mid |
Ready | Move left-upper point of a window when the height or the width are over in Resize Window
|
Feature | Mid |
☐ | Implement simeji/winresizer in GUI | Feature | Low |
☐ | Registration of keybindings by pressing keys. | Feature | Low |
☐ | Modern GUI (use WinUI3 or Flutter2?) | Change | Low |
License
This software is provided by MIT License.
Author
- pit-ray
[E-mail] pit-ray(at)outlook.com