wim

Wim News

Version 3.3 has been released with great improvements

Feature List

Expand Feature List
- Clean installation. Everything will go where they belong, under `$HOME/.vim/` - Automatic Plugin Installation - Plugins for LSP, completion, snippets, colors, web development, Git, usability, enhancements, jumping around, utility, integration, etc. - Vimwiki configuration - Wim ships with a default vimwiki wiki file that you can read anytime inside Wim. - Execute python, bash, js, go files without leaving Vim. - Set the encoding to UTF-8. - Auto save toggle - Theme setup - Catppuccin Mocha theme with true color support and GUI font configuration. - Cursor shape configuration for different modes. - Startify configuration - Customized Startify start screen with a custom header, footer, and bookmarks. - Clipboard configuration - Uses the system clipboard for copy-paste. - Remember cursor position - Remembers the cursor position in files. - Persistent undo history - Sets up persistent undo history with a custom directory. - Various sane vim settings - Vim settings like autoindent, ignorecase, number, relativenumber, etc. - Netrw configuration - Configures netrw with hidden dotfiles and other settings. - Lightline statusbar - Lightline status bar with a custom theme and components. - Spell checking - spell checking with custom mappings and highlights. - Bilingual configuration with easy layout changing inside Vim. - hidden ZWNJ characters by default for languages like Persian. - Custom mappings - custom key mappings for various actions. - Split navigation - key mappings for split window navigation and resizing. - Floaterm configuration - floaterm plugin with custom key mappings and settings for executing various languages inside Vim. - Gitgutter configuration - GitGutter signs for added, modified, and removed lines. - Tagbar configuration - Tagbar with a custom ctags binary path. - Terminal mappings - Sets up key mappings for terminal usage within Vim. - Runtime macros - Load custom runtime macros for various functionalities such as justification, emojis and matchit. - Ultisnips configuration - UltiSnips with custom key bindings for snippet expansion and navigation. - Clever-f configuration - Clever-F plugin with custom settings for enhanced f/F/t/T motions. - Disable unnecessary internal plugins - Disabled several built-in Vim plugins to optimize startup time. - coc.nvim configuration - coc.nvim for autocompletion, diagnostics, and other LSP s. - coc global extensions - Installs and configures various coc.nvim extensions for different languages and functionalities. - coc-explorer configuration - coc Explorer as the file explorer with icons and customizations. - coc-marketplace for coc extensions installation with fuzzy matching. - Navigation mappings - key mappings for navigating definitions, type definitions, implementations, references, and diagnostics using coc.nvim.
Older Versions #### Version 3.1 has been released - Improved style and workflow - Cleaned up the config - Corrections on Coc.nvim's behavior - and many more ... #### Version 3.2 has been released - Replaced vim-css plugin with vim-hexokinase due to vim-css's inability to highlight colors in C files properly (you need go for this new plugin which the installation script will take care of) - Improved easy motion bindings - Added Catpuccino theme - Updated and improved the installation script

Intro

The purpose of this project is to not only provide an IDE-like vimrc, but also to teach you how it is constructed. This project tries to maintain a fairly small vimrc and provide a great out of the box experience as well serving as a ground for further customization.

Dependencies

Example:
Debian:
sudo apt install nodejs npm
Arch:
sudo pacman -S nodejs npm

Installation

After installing the dependencies, clone the repo and run the symlink.sh script. Then simply wait for the setup to complete.

Tl;Dr:

This method enables you to update Wim without having to clone the repo again or run the install script. Simply git pull every once in a while and as long as you don’t mess up the symlinks, you won’t have to do anything else. If you happen to mess up the symlinks, just run the update.sh script that will be generated after the first time of running the symlink.sh script.

Watch it work

https://github.com/wolandark/wim/assets/107309764/bfcc50df-684f-40ee-8bdc-a27b1bb65cf8 This is recorded on Devuan (in case that matters).

Method II

After installing the dependencies, run the install.sh script. The script is safe and works sudo-less.

bash <(curl -s https://raw.githubusercontent.com/wolandark/wim/master/install.sh)

Tl;Dr:

Watch it work

https://github.com/wolandark/wim/assets/107309764/40c70e11-6a5a-4fcc-a0b2-4340316d8463 This is recorded on Devuan (in case that matters).


Some of the features

See the exhaustive feature list above

Notes

Notes for Windows users Make sure you have `nodejs` and `npm` in your `PATH` and that you have `curl` installed.
You have to manually install `fzf` from the official repo and remove the `Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }` line from `wim-vim`. (Yes because you're on windows you must suffer!)
Clone the repo and move the `wim-vim` file under `C:\Users\username\vimfiles\vimrc`. Make sure to rename it to `vimrc`. Copy over the `coc-settings.json`, `cheat40.txt` and the whole `vimwiki` directory also under the aforementioned path. Then simply start Vim and wait for the installation to finish.
Notes for Mac users If you plan to use Vim from the terminal, FOR THE LOVE OF CHRIST USE ITERM!

Screenshots

image

imageStartify Dashboard imageNeat UI imageDiagnostics
imageFloating Terminal imageInstal Any LSP Extension imageShortcuts Cheatsheet
imagePeekabo For Registers imageJump Anywhere imageHover Dictionary

Usage

Once the installation is finished, launch vim and enter your wiki index by issuing <Leader>vw (leader means space) in normal mode. Then open the Wim wiki page and read at your own leisure.

You can use Vim as you normally would and gradually learn about the features of Wim’s config, and the plugins it comes with.

Check out the wiki which has more information than the integrated wiki and will be updated more regularly.

Any time you feel lost, remember :Cheat40 and :Maps are your best friends, after the wiki of course 😉.

Table of Keybindings

(leader is the space key)

CoC LSP Keybindings | Keys | Function | | -------------- | ----------------------------------------- | | gd | Jump To Definition | | gy | Type Definition | | gi | Implementation | | gr | References | | [g | Diagnostics Prev | | ]g | Diagnostics Next | | \<leader\>ca | Code Action | | \<leader\>f | Format Selected Code | | \<leader\>? | diagnosticInfo | | K | Show Hover Documentation | | \rc | Restart CoC |
Misc Keybindings | Keys | Function | | -------------- | ----------------------------------------- | | \<F6\> | Turn on Spell Checking | | \<F8\> | Compile and Run Basic C Code | | \<F12\> | Execute Bash, Python, Nodejs & Go Files | | gs | Fix Spelling To The First Immediate Match | | \<ESC\>\<ESC\> | Turn Off Search Highlights | | \a | Auto Save Toggle | | \\t | FloatermToggle | | \<leader\>M | Maps | | \<PageUp\> | Buffer Next | | \<PageDown\> | Buffer Previous | | \<Del\> | Buffer Delete | | \<leader\>\ | Border Around Current Line Using Toilet | | \<leader\>e | File Explorer | | \<leader\>T | New Tab | | \<leader\>mk | Make View | | \<leader\>i | Startify Dashboard | | \<leader\>S | Add Empty Line Above & Below Current Line | | \<leader\>[ | Add Empty Line Above | | \<leader\>] | Add Empty Line Below | | \<leader\>w | Save | | \<leader\>so | Save & Source Buffer | | \<leader\>k | Move Line Up | | \<leader\>j | Move Line Down | | K | Move Line Up In Visual Mode | | J | Move Line Down In Visual Mode | | jj | \<ESC\> | | \<leader\>pli | PlugInstall | | \<leader\>plc | PlugClean | | \<leader\>plu | PlugUpdate | | \<leader\>pld | PlugUpgrade |
Split Navigation | Key | Function | | ----------- | ------------------------ | | \<C-h\> | Focus Left Split | | \<C-j\> | Focus Bottom Split | | \<C-k\> | Focus Top Split | | \<C-l\> | Focus Right Split | | \<C-LEFT\> | Focus Left Split | | \<C-DOWN\> | Focus Bottom Split | | \<C-UP\> | Focus Top Split | | \<C-RIGHT\> | Focus Right Split | | \<leader\>R | Rotate Window Up/Left | | \<leader\>r | Rotate Window Down/Right | | \<s-Right\> | Resize Split Right | | \<s-LEFT\> | Resize Split Left | | \<s-UP\> | Resize Split Up | | \<s-DOWN\> | Resize Split Down |
Tabs | Key | Function | | -------------- | ------------------------------ | | \<M-Left\> | Tab Previous | | \<M-Right\> | Tab Next | | \<leader\>1..9 | Go To Corresponding Tab Number | | \<leader\>0 | Tab Last | | \<leader\>x | Tab Close |
FZF

Other than :Colors and :Buffers, the rest of these are commented out. You can enable them at your will.

| Key | Function | | ------------- | -------- | | \c | Colors | | \<leader\>b | Buffers | | \<leader\>ff | Files | | \<leader\>W | Windows | | \<leader\>h | History | | \<leader\>hc | History | | \<leader\>rg | Ripgrep | | \<leader\>li | Lines | | \<leader\>bli | BLines | | \<leader\>ma | Marks | | \<leader\>sn | Snippets | | \<leader\>com | Commands | | \<leader\>ag | Ag | | \<leader\>tag | Tags |
Aligning Text | Key | Function | | ----- | ----------------- | | \\\ta | Tabularize [char] |
Enuch Shell Commands

Other than :Chmod, the rest of these are commented out. You can enable them at your will.

| Key | Function | | ------------- | --------- | | \<leader\>ch | Chmod +x | | \<leader\>suw | SudoWrite | | \<leader\>sue | SudoEdit | | \<leader\>rm | Remove | | \<leader\>del | Delete! | | \<leader\>mv | Move | | \<leader\>dup | Duplicate | | \<leader\>mkd | Mkdir |
Floterm | Key | Function | | ----------- | ---------------------- | | \t | FloatermToggle | | \q | FloatermKill | | \n | FloatermNext | | \p | FloatermPrev | | \v | vifm Inside FloaTerm | | \ra | ranger Inside FloaTerm | | \\\tr | Terminal Right | | \\\tb | Terminal Bottom | | \rg | Run Go In Terminal | | \rb | Run Bash In Terminal | | \rj | Run Nodejs In Terminal | | \rp | Run Python In Terminal | | \<leader\>lf | Lf |
Terminal | Key | Function | | ----------- | ------------------------------------------ | | \<leader\>' | Vim's Terminal | | \l | Clear Terminal In the Background (For F12) | | \<C-j\> | Focus Bottom | | \<C-k\> | Focus Top | | \<C-DOWN\> | Focus Bottom | | \<C-UP\> | Focus Top |
Snippets | Key | Function | | ------- | --------------------------------------------- | | \<C-j\> | Expand Snippet & Jump Forward In Placeholders | | \<C-k\> | Jump Backward In Placeholders | | \<C-l\> | List Snippets |
bilingual | Key | Function | | ------- | --------------------------- | | \<C-p\> | SwitchKeymap In Insert Mode | | \<C-p\> | SwitchKeymap In Normal Mode |
Unimpaired #### Most Useful Unimpaired Mappings.
Refer to the [official guide](https://github.com/tpope/vim-unimpaired/blob/master/doc/unimpaired.txt) for more | Key | Function | | ---------- | ------------------------------------------------------ | | [b | :bprevious | | ]b | :bnext | | [B | :bfirst | | ]B | :blast | | [a | :previous | | ]a | :next | | [A | :first | | ]A | :last | | [\<Space\> | Add [count] blank lines above the cursor. | | ]\<Space\> | Add [count] blank lines below the cursor. | | [e | Exchange the current line with [count] lines above it. | | ]e | Exchange the current line with [count] lines below it. |

Consider Supporting the project

BTC
bc1q7tr3znnrsqq85kalk5zedak9mgn9u3ly849t8z
ETH
0x28a60D7429a2DFdf6b009261D3814cA182B34Bb2
Monero
0xd84c96dDa2E6f9ee9DD0439F6F7812c5b8869fE4
Doge
DJKBgAEQ7n5GyozM8jqmGbxnhcH6U2V8hV
Tether
0x28a60D7429a2DFdf6b009261D3814cA182B34Bb2
Tron
TX8mVZajyy7cmH9vsREyAMPjgtRu23ZmxJ
ADA
addr1qxhv2rfrs37qvs0cllfcnu0rd83wre609s74aufkd82da9528v7xq34usds6t8sdt7zjy0hvkcwdfnp9jwacdn0kwuesatvjx4
Avalanche
0x28a60D7429a2DFdf6b009261D3814cA182B34Bb2

FAQ

Whats with the name?

Woland’s Vim = Wim. Get it? 😉

What features does Wim offer?
Can I expect support?

Yes! Just ask and I will answer. When asking however, provide proper information so that I can help you

Why didn't you use Neovim like everyone else?

Because Vim is the one I use and imo Vim is better!

Will you make custom vimrc configurations?

Contact me at Telegram or Email me.

Are you open to collaborations?

Of course! All collaborations and contributions as well as issues etc are welcomed!

Contribution Guide

Please follow contribution conventions when submiting pull requests. See Conventional Commits for more information.


[![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/wolandarkside) [![Protonmail](https://img.shields.io/badge/ProtonMail-8B89CC?style=for-the-badge&logo=protonmail&logoColor=white)](mailto:contact-woland@proton.me)