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
- Improved style and workflow
- Cleaned up the config
- Corrections on Coc.nvim's behavior
- and many more ...
- 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
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.
- Vim 9.0 or later with huge features.
- Note: This config will definitely work with Vim 8.0 and later, but don't miss out on the great features of Vim 9.1! Grab the latest Vim!
- Nodejs
- npm
Example:
Debian:
sudo apt install nodejs npm
Arch:
sudo pacman -S nodejs npm
After installing the dependencies, clone the repo and run the symlink.sh
script. Then simply wait for the setup to complete.
Tl;Dr:
- Install Dependencies
- Clone This Repo
git clone https://github.com/wolandark/wim.git
- cd Into The Cloned Repo
cd wim
- Run the
symlink.sh
script./symlink.sh
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.
symlink.mp4
This is recorded on Devuan (in case that matters).
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:
- Install Dependencies
- Run the
install.sh
Using Curl
install.mp4
This is recorded on Devuan (in case that matters).
See the exhaustive feature list above
- Out of the box plugin installation
- Out of the box LSP setup for HTML, CSS, JS, TS, Bash and MORE if you want it!
- Tab Completion and snippets for fast coding
- Thoroughly documented in build-it wiki (vw to access it anytime!)
- Easy tab and split navigation
- Start Screen with bookmarks and file history
- Beautiful catpuccino and base16 colorschemes
- Customized Lighline statusline
- Customizability! It is lightweight and extensible and FAST!
- Make sure to setup your $TERM variable properly. On Unix and Unix-like systems the $TERM must report
xterm-256color
. See this wiki note. - Some terminals hold unto your Ctrl or Alt or shift key for their own functions. It's up to you to use a sane terminal emulator!
- This config has been tested on various GNU+Linux distros as well as MacOS, FreeBSD and Windows, but official support will only be provided for GNU+Linux distros.
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!
Startify Dashboard | Neat UI | Diagnostics |
Floating Terminal | Instal Any LSP Extension | Shortcuts Cheatsheet |
Peekabo For Registers | Jump Anywhere | Hover Dictionary |
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 π.
(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
Refer to the official guide 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. |
BTC
bc1q7tr3znnrsqq85kalk5zedak9mgn9u3ly849t8z
ETH
0x28a60D7429a2DFdf6b009261D3814cA182B34Bb2
Monero
0xd84c96dDa2E6f9ee9DD0439F6F7812c5b8869fE4
Doge
DJKBgAEQ7n5GyozM8jqmGbxnhcH6U2V8hV
Tether
0x28a60D7429a2DFdf6b009261D3814cA182B34Bb2
Tron
TX8mVZajyy7cmH9vsREyAMPjgtRu23ZmxJ
ADA
addr1qxhv2rfrs37qvs0cllfcnu0rd83wre609s74aufkd82da9528v7xq34usds6t8sdt7zjy0hvkcwdfnp9jwacdn0kwuesatvjx4
Avalanche
0x28a60D7429a2DFdf6b009261D3814cA182B34Bb2
- Maintenance, extensibility and customizability!
- Easy LSP setup, completion, intellisense etc ...
- Easy tab and split navigation
- Start Screen with bookmarks and file history
- Beautiful built in colorschemes
- Thorough Docs!
- See the exhaustive feature list above for more in depth information
Because Vim is the one I use and imo Vim is better!
Contact me at Telegram or Email me.
Of course! All collaborations and contributions as well as issues etc are welcomed!
Please follow contribution conventions when submiting pull requests. See Conventional Commits for more information.