colson-nvim
v1.0.21
Published
Colson Nvim: Neovim Code Editor/IDE for Software Engineers!
Downloads
606
Maintainers
Keywords
Readme
Step into the realm of excellence with my world-class Neovim (nvim) configuration! This comprehensive guide unveils a meticulously crafted zenful setup, meticulously designed for unparalleled efficiency, productivity, and visual splendor within Neovim.
Embark on a journey through a domain enriched with powerful features, plugins, and finely tuned key bindings, addressing a diverse range of coding/text-editing requirements. Welcome to a sublime Neovim experience tailored to elevate your coding endeavors to new heights! 🔥
Installation through NPM
Ensure Neovim (v >= 0.9.0)
and Node
are installed on your machine!
NOTE
: Leader key for Neovim -> SPACE
$ npx colson-nvim
$ cd ~/.config/nvim
$ nvim .
Navigate to lua/colson/packer.lua
Execute this command in normal mode!
:so
:PackerSync
For the latest pull, do:
$ npx colson-nvim@latest
If its not the first time, then each time you do the latest pull, go to:
$ cd ~/.config/nvim
$ nvim .
Navigate to lua/colson/packer.lua
Then, in normal mode, do:
<leader>pac
Important Dependency!
For this to work properly, many packages depends upon this dependency Ultisnips
which requires pynvim
installed on your machine.
Here's detailed guide:
Here's quick guide!!
$ sudo pacman -S base-devel cmake unzip
$ sudo pacman -S python-pynvim
Now, make sure you're synced with my latest configuration!
$ cd ~/.config/nvim
$ nvim .
Open lua/colson/packer.lua
<leader>pac
DONE!! This resolves the error when opening NVIM!
COOL!
Now, Restart Neovim in your desired workspace!
nvim .
FOR the latest installation pull, do:
$ npx colson-nvim@latest
NOTE
: Read the documentation below for indepth wisdom on proper installation and uses!
That's the beginning of the new world. A beginning of new experience, journey packed with challenges, integrated with tools used in daily lives, boosting productivity, enhancing engineers performance!
goto: TABLE OF CONTENTS 🚀
DEMO Screenshot
✨ New Updated Zenful Look (COLSON NVIM)
@ Neovim on Arch Linux
💎 NEW LOOK (Colson NVIM, December 5th, 2024)
New Modern Look, September 2024 💎
Latest Fresh Look, July 2024 :)
@ Neovim on macOS
2023/Early 2024 Look
🔥 Discord Presence for Neovim
❕ Keeping Your Configuration Up-to-Date
I'm committed to consistently enhancing this Neovim setup with new features, optimizations, and additional plugins. To ensure you're making the most out of this dynamic configuration, I recommend checking for updates monthly!
As the configuration evolves, it's a good practice to sync your local repository with the latest changes. To do this, navigate to your Neovim configuration directory and run the following command:
cd ~/.config/nvim
git pull origin main
Prerequisites: Neovim 0.9.0 or Higher
Ensure a seamless experience by confirming your Neovim version meets the requirements. Execute the following command to check your Neovim version:
nvim --version
Upgrade to Neovim 0.9.0 or higher if needed, and dive into an enhanced coding experience with this dynamic configuration! 🚀
Table of Contents
- Installation through NPM
- ✨ New Updated Zenful Look (COLSON NVIM)
- @ Neovim on Arch Linux
- @ Neovim on macOS
- 🔥 Discord Presence for Neovim
- ❕ Keeping Your Configuration Up-to-Date
- Prerequisites: Neovim 0.9.0 or Higher
- Table of Contents
- Introduction
- Installation
- Features
- 🔥 NEW UPDATES
- 🚀 React Snippets Autocompletion
- Git Diff View 😆
- 🛰️ HTTP REST Client
- Usage Example
- 🪐 HTTP Client
- 🔄 Syncing Packer Updates
- ✅ Git Merge Conflicts Resolver
- 🔭 Telescope 🔥
- Cool Pre-Configured Themes
Introduction
This Neovim configuration is a powerhouse of productivity enhancements and aesthetics. I've curated a selection of plugins, key bindings, and themes to provide a versatile and delightful text-editing experience. Whether you're a developer, writer, or anyone in need of a robust text editor, this setup has got you covered.
💎 Old Look (COLSON NVIM)
Installation
To embark on this Neovim journey, follow these steps:
Clone this repository to your Neovim configuration directory:
git clone https://github.com/colson0x1/colson-nvim ~/.config/nvim
Install Packer.nvim for managing plugins:
git clone https://github.com/wbthomason/packer.nvim \ ~/.local/share/nvim/site/pack/packer/start/packer.nvim
Launch Neovim and run
:PackerSync
to install and update plugins.Install JetBrainsMono Nerd Font:
- Install the regular JetBrains Mono version to support Unicode and Programming Languages Icons in the Neovim IDE! https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zip
Now, you're all set to unleash the power of this Neovim configuration!
Features
Global Key Bindings
Leader Key
<Space>
serves as the leader key for most key bindings.
Netrw: File Explorer
<leader>pv
: Open a file explorer with Netrw.
NvimTree (Right window pane file explorer)
<leader>e
: Toggle NvimTree
NOTE: Make sure NvimTree is Opened!
<leader>+
- Increase the NvimTree (or current window) width by 5 columns.<leader>-
- Decrease the NvimTree (or current window) width by 5 columns.<leader>fp
- Manually set the width of the Project Pane.
Save Files
<leader>w
- Save all open files.
Save and Exit Nvim
<leader>q
: - Exit Neovim
NEW Look!
Old Look
Collaborative Editing
<leader>vwm
: Start a Vim-With-Me collaborative editing session.<leader>svwm
: Stop a Vim-With-Me collaborative editing session.
Text Manipulation
- ``: Delete selected text in visual mode.
- ``: Yank text to the system clipboard.
Ctrl+y
: Yank the entire line to the system clipboard.- ``: Delete text without clobbering the register.
Ctrl+c
: Exit insert mode.
Code Formatting
<leader>f
: Format code using LSP (Language Server Protocol).- Even awesome:
:w
triggers Prettier for code formatting!
Navigation
<C-k>
and<C-j>
: Navigate through the quickfix list.<leader>k
and<leader>j
: Navigate through the location list.
Search and Replace
Search and Replace
<leader>sr
: Perform a search and replace using Telescope.
Normal Mode Key Bindings
Line Manipulation
<leader>k
and<leader>j
: Move the current line up or down.<leader>K
and<leader>J
: Copy the current line up or down.<leader>dd
: Delete the current line.<leader>cc
: Duplicate the current line.
Scrolling
** and **
: Scroll down or up.
Code Navigation
gd
: Go to definition.gf
: Go to file.gy
: Go to type definition.gi
: Go to implementation.gr
: Show references.- ``: Rename symbol.
Ex Mode
:W
: Write the current file.:Wq
: Write and quit.:WQ
: Write and quit (forceful).:Wqa
: Write all and quit.
Git Integration
<leader>gs
: Git status.<leader>gc
: Git commit.<leader>gp
: Git push.<leader>gl
: Git log.
Harpoon Integration
Ctrl+e
: Harpoon open quick list.<leader>a
: Harpoon add buffer.
Ctrl+t and Ctrl+h
: Harpoon toggle buffer.
LSP Integration
Shift+k
: LSP hover.Ctrl+n
: LSP toggle next in autocompletion.Ctrl+p
: LSP toggle previous in autocompletion.Ctrl+k or Ctrl+y
: LSP select in autocompletion.- View Diagnostic Errors:
<leader>dd
or<leader>sd
or<leader>vd
Telescope Integration
<leader>pf
: Find files in the current directory.
NOTE: <leader>
is SPACE
TELESCOPE GREP Search
Search by keyword in files!
<leader>ps
: Live grep files.
🔥 NEW UPDATES
Bufferline
To enable bufferline (Tab based file buffer like VSCode), Go to:
$ ~/.config/nvim
Open nvim: $ nvim .
Navigate to packer.lua
and uncomment Bufferline Plugin
After that, write :w
and source it: :so
and run packer sync: :PackerSync
Now you're good to go!
<leader>h
: Goes to next tab.<leader>g
: Goes to prev tab.<leader>btl
: Move tab left.<leader>btr
: Move tab right.<leader>bd
: Delete current tab.<leader>bcl
: Delete all tabs on left hand side.<leader>bcr
: Delete all tabs on right hand side.<leader>abc
: Close all tabs except currently opened one.
JSX/TSX & Other Languages Commenting
@ Commenting in Normal Mode
gcc
- Toggles the current line usinglinewise
comment.gbc
- Toggles the current line usingblockwise
comment.[count]gcc
- Toggles the number of line given as a prefix count usinglinewise
comment.[count]gbc
- Toggles the number of line given as a prefix count usingblockwise
comment.gc[count]{motion}
- Toggles the region usinglinewise
comment.gb[count]{motion}
- Toggles the region usingblockwise
comment
@ Commenting in Visual Mode
gc
- Toggles the region usinglinewise
comment.gb
- toggles the region usingblockwise
comment.
Discord Presence
- Open discord first and then, open your workspace from terminal:
nvim .
Emmet (For HTML/JSX Autocompletion)
!<Ctrl+k>
To generate HTML standard boilerplate.app-header<Ctrl+k>
: Createsdiv
withclassname
ofapp-header
.#root<Ctrl+k>
: Createsdiv
withid
ofroot
..flex.color-blue-600
: Createsdiv
withclassnames
-flex color-blue-600
.div<Ctrl+k>
: Createsdiv
element.nav>ul>li*2<Ctrl+k>
: Creates<nav> <ul> <li></li> <li></li> </ul> </nav>
- `p+span<Ctrl+k>: Creates
<p></p> <span></span>
.className<Ctrl+k>
: Createsdiv
withprop
className
which can be useful for styling with css modules, tailwind or mixing with style components.
Normal Mode Tag Manipulation: tsx/jsx/html
vit
: Selects everything inside the tag, excluding the tags themselves.vat
: Selects everything including the tag (inner and outer).cit
: Deletes everything inside the tag and starts insert mode.dit
: Deletes everything inside the tag without entering insert mode.dat
: Deletes the tag and its contents.
Tailwind CSS IntelliSense
- Use
<Ctrl+k>
to select when you use tailwind: Ex when you typetext-
inclassName='text-'
, you get autocompletion! - Use
<Ctrl+k
to select in autocompletion. - Use
<Ctrl+n
to go to next in the occurrence. - Use
<Ctrl+p
to go to prev in occurrence.
Gen Lorem Ipsum
- To generate lorem ipsum paragraph: In normal mode, type
:Lorem
- To generate specified constraint of words:
:Lorem 10
which generates 10 words.
Code Fold
- To use code folding: First go to
Visual Line Mode
usingShift+v
. After that usej
ork
to select block of code. Now use:zf
to fold code. To unfold the code, go to the code fold line and use:zo
to open the code fold.
Live Server
- First install live server globally:
sudo npm install -g live-server
- Now inside
Neovim
: Go toindex.html
and onNormal Mode
, type::LiveServerStart
to start the server and:LiveServerStop
to stop the server.
System Clipboard Copy
First install xclip
on your machine in order for the configurations to work:
$ sudo pacman -S xclip
Then open any workspace with nvim .
in Tmux
environment. Now you're ready to go!
- NORMAL OR VISUAL MODE:
<leader>y
- Copies to system clipboard. - NORMAL MODE:
<leader>Y
- Copies text from cursor to the end of the line to the system clipboard.
🚀 React Snippets Autocompletion
Ultisnips Dependency Installation
For this to work, the main package depends upon this dependency Ultisnips
which requires pynvim
installed on your machine.
First, let's verify if python3
support is enabled inside your nvim
environment.
cd ~/.config/nvim
nvim .
Open packer.lua
and in normal mode: Type
:echo has('python3')
If it returns 1, we're good to go else we need to install the dependencies to enable the support inside the neovim environment.
Here's how to do it on Arch Linux:
$ sudo pacman -S base-devel cmake unzip
$ sudo pacman -S python-pynvim
NOTE
: Make sure to use the package manager based on your distribution!!
- On Arch-based distros:
sudo pacman -S <package-name>
- On Debian-based distros:
sudo apt install <package-name>
- On Red Hat-based distros:
sudo yum install <package-name>
For macOS:
brew install python3
brew install pynvim
Now, again open that packer.lua
file and verify if we've got access to the python3
inside neovim
environment.
This time, it should return 1
aka OKAY!
Now, make sure you're synced with my latest configuration!
$ cd ~/.config/nvim
nvim .
Open packer.lua
:so
:PackerSync
Yay, finally now we should be able to use React Snippets
!
🔥 React Snippets Guide
Use
<Ctrl+l>
after you type the trigger code!
Functional Components
| Trigger Code | What it does |
| ------------ | ------------------------------------------ |
| fce
| Function Component Export
|
| fcde
| Function Component Default Export
|
| sfce
| Simple Function Component Export
|
| sfcde
| Simple Function Component Default Export
|
| useS
| useState
|
| useE
| useEffect
|
| useEA
| useEffect async
|
| useC
| useContext
|
| useRed
| useReducer
|
| useCB
| useCallback
|
| useM
| useMemo
|
| useR
| useRef
|
| useI
| useImperativeHandle
|
| useL
| useLayoutEffect
|
| useDV
| useDebugValue
|
| useT
| useTransition
|
Class Components
| Trigger Code | What it does |
| ------------ | ----------------------------------------- |
| rce
| React Class Component Export
|
| rcep
| React Class Export with Prop interface
|
| rceps
| React Class Export with Props and State
|
| rcc
| React Class Component
|
| rcon
| React Class Constructor
|
| spt
| Static PropTypes
|
| sdp
| Static Default Props
|
| sdpt
| Static Default Props Typed
|
| cdm
| Component Did Mount
|
| cdu
| Component Did Update
|
| cdc
| Component Did Catch
|
| cwum
| Component Will Unmount
|
General Redux + Redux Toolkit
| Trigger Code | What it does |
| ------------ | ------------------------ |
| useDS
| useDispatch
|
| useSL
| useSelector
|
| cs
| createSlice
|
| ecs
| export createSlice
|
| cpr
| create prepare reducer
|
| cat
| createAsyncThunk
|
🎯 TypeScript/JavaScript Engine: Cool Features
- @ sorts and removes unused imports:
<leader>oi
or<leader>soi
- @ sorts imports:
<leader>si
- @ removes unused imports:
<leader>ui
or<leader>ri
- @ adds imports for all statements that lack one and can be imported:
<leader>ai
- @ fixes all fixable errors:
<leader>fe
- @ goes to source definition (available since TS v4.7):
<leader>d
- @ allow to rename current file and apply changes to connected files:
<leader>r
or<leader>rn
or<leader>rf
- @ find files that reference the current file (available since TS v4.2):
<leader>fr
Git Diff View 😆
These keymaps facilitate easy navigation and management of diffs in your codebase!
| Key Mapping | Action |
| ---------------- | ------------------------ |
| <leader>do
| Open diff view |
| <leader>dc
| Close diff view |
| <leader>df
| Toggle file panel |
| <leader>dh
| Focus file panel |
| <leader>dr
| Refresh files |
| <leader>dp
| Previous file entry |
| <leader>dn
| Next file entry |
| <leader>dt
| Select entry |
| <leader>dh
| Open file history panel |
| <leader>dl
| Close file history panel |
🛰️ HTTP REST Client
Keymaps
| Action | Key Mapping |
| ---------------------------- | ---------------- |
| Send HTTP request | <leader>rr
|
| Preview HTTP request | <leader>rp
|
| Re-run last HTTP request | <leader>rl
|
| Toggle environment variables | <leader>re
|
Key Mapping Explanation
<leader>rr
: Sends the HTTP request located at the cursor position. Useful for quickly testing endpoints without leaving the editor.<leader>rp
: Previews the HTTP request that will be sent. This is beneficial for verifying the request structure and headers before execution.<leader>rl
: Re-runs the last executed HTTP request. This saves time when you need to test the same endpoint multiple times.<leader>re
: Toggles environment variables from a.env
file, allowing you to manage configurations effectively.
Usage Example
Here’s an example of how to use HTTP REST Client in your workflow:
- Open a new buffer in Neovim.
- Write your HTTP request in the format supported in either one of these extension -
.http
or.rest
. For example:
API.http
POST http://localhost:3000/api/v1/users
Content-Type: application/json
{
"name": "Colson",
"currentYear": "2024",
"age": "25"
}
- Place the cursor anywhere within the request.
- Press
<leader>rr
to send the request. - Check the response in a split window.
🪐 HTTP Client
This requires two dependencies: pynvim
and requests
library. Make sure these two dependencies are installed on your machine for it to work!
pynvim Bindings:
- Install with
pip
:pip install pynvim
- On Arch-based distros:
sudo pacman -S python-pynvim
- On Debian-based distros:
sudo apt install python3-pynvim
- On Red Hat-based distros:
sudo yum install python-pynvim
requests Library:
- Install with
pip
:pip install requests
- On Arch-based distros:
sudo pacman -S python-requests
- On Debian-based distros:
sudo apt install python3-requests
- On Red Hat-based distros:
sudo yum install python-requests
⚡ Execute Network Request
Use the extension .http
to run HTTP API Requests!
Go to the
.http
file.To initiate a network request, execute:
<leader>api
To terminate the current request, execute:
<leader>ter
🔄 Syncing Packer Updates
- Go to:
cd ~/.config/nvim
- Open with nvim:
nvim .
- Navigate to
lua/colson/packer.lua
- Execute this to source + sync packer plugins:
<leader>pac
- DONE :)
✅ Git Merge Conflicts Resolver
| Key Mapping | Command | Action |
| ------------ | ------------------------- | ------------------------------------------ |
| <leader>co
| GitConflictChooseOurs
| Choose your changes (ours
). |
| <leader>ct
| GitConflictChooseTheirs
| Choose incoming changes (theirs
). |
| <leader>cb
| GitConflictChooseBoth
| Include both sides (both
). |
| <leader>c0
| GitConflictChooseNone
| Discard both sides (none
). |
| <leader>cn
| GitConflictNextConflict
| Jump to the next conflict. |
| <leader>cp
| GitConflictPrevConflict
| Jump to the previous conflict. |
| <leader>cs
| GitConflictListQf
| List all conflicts in the quickfix window. |
🔭 Telescope 🔥
Telescope Normal Mode Commands
| Keymap | Mode | Description |
| -------------------------- | ----------- | ------------------------------------ |
| <leader>pf or <leader>ff
| Normal Mode | Find files in the project |
| <leader>ps or <leader>fg
| Normal Mode | GREP Search: Search across all files |
| <leader>fb
| Normal Mode | Switch between buffers |
| <leader>fh
| Normal Mode | Open help tags |
| <leader>fs
| Normal Mode | Interactive string search |
| <leader>fd
| Normal Mode | View diagnostics for the workspace |
| <leader>fw
| Normal Mode | Search workspace symbols |
| <leader>fr
| Normal Mode | Find references to a symbol |
| <leader>fi
| Normal Mode | Locate implementations |
| <leader>fc
| Normal Mode | Quickly execute Neovim commands |
| <leader>ft
| Normal Mode | Explore syntax tree using Treesitter |
| <leader>gs
| Normal Mode | View Git status |
| <leader>gc
| Normal Mode | Browse Git commits |
| <leader>gb
| Normal Mode | Switch Git branches |
| <leader>gf
| Normal Mode | Locate files tracked by Git |
Telescope Insert Mode Commands
| Keymap | Mode | Description |
| ------- | ----------- | ------------------------- |
| <C-n>
| Insert Mode | Move to the next item |
| <C-p>
| Insert Mode | Move to the previous item |
| <C-c>
| Insert Mode | Close Telescope window |
| <CR>
| Insert Mode | Select default item |
| <C-x>
| Insert Mode | Select horizontally |
| <C-v>
| Insert Mode | Select vertically |
Cool Pre-Configured Themes
The themes are configured already but I've commented out rest. Feel free to explore these themes and uncomment the one that resonates with your taste!
Preconfigured themes:
@ Github Themes - Has flavors
@ Jetbrains IDE Theme
@ Tokyo Night Theme - Has flavors
@ Catppuccin Theme - Has flavors
@ Rose Pine Theme - Has flavors
END: May your coding journey with Neovim be nothing short of stellar! 🚀
Peace! 🕊