Skip to content
/ wim Public

This is a Vim configuration that gets you a similar experience as a full-featured IDE. This is accomplished using native vim features with the help of some plugins.

License

Notifications You must be signed in to change notification settings

wolandark/wim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

  • 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

Installation

Method I (Recommended)

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.

Watch it work

symlink.mp4

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:

  • Install Dependencies
  • Run the install.sh Using Curl

Watch it work

install.mp4

This is recorded on Devuan (in case that matters).


Some of the features

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!

Notes

  • 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!

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 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?
  • 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
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 Protonmail

About

This is a Vim configuration that gets you a similar experience as a full-featured IDE. This is accomplished using native vim features with the help of some plugins.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •